PHP 如何获取二维数组中某个key的集合


Posted in PHP onJune 03, 2014

本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。

具体是这样的,如下一个二维数组,是从库中读取出来的。

代码清单:

$user = array( 
0 => array( 
'id' => 1, 
'name' => '张三', 
'email' => 'zhangsan@sina.com', 
), 
1 => array( 
'id' => 2, 
'name' => '李四', 
'email' => 'lisi@163.com', 
), 
2 => array( 
'id' => 5, 
'name' => '王五', 
'email' => '10000@qq.com', 
), 
...... 
);

上面的数组格式,主要大家玩过 PHP+MYSQL,就肯定非常熟悉了。

那么,现在有这样的两个需求:

1)获取索引"id"的集合,并且保存为一个一位数组,即得到 array(1,2,5)

不知道各位朋友会怎么写呢?

如果是以前我的写法就是直接 foreach,然后 array_push 一个个的往一个数组变量里塞。这样也能实现。但这样的写法很影响性能,因为使用 PHP 原生的函数肯定比循环效率高。

代码清单:

$ids = array(); 
$ids = array_map('array_shift', $user);

如上代码就可以得到我们想要的结果了,关于函数的使用想看手册。

其实这里面还有一种方案,使用 array_column 函数,不过此函数需要 PHP 版本要求,(PHP 5 >= 5.5.0)

代码清单:

$ids = array(); 
$ids = array_column($user, 'id');

这样的话,效率肯定会更高了。

2)获取索引"name"的集合,并且保存为一个一位数组,即得到 array('张三','李四',‘王五')

按照,我以往的写法,还是一样的foreach,然后 array_push 一个个的往一个数组变量里塞。请看高效率的代码清单。

代码清单:

$names = array(); 
$names = array_reduce($user, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;'));

得到结果:
array( 
1 => '张三', 
2 => '李四', 
5 => '王五', 
);

经常 foreach 的童鞋,赶快更正吧!
PHP 相关文章推荐
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
深入PHP curl参数的详解
Jun 17 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
PHP面向对象详解(三)
Dec 07 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
php实现的一段简单概率相关代码
May 30 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 #PHP
php 批量添加多行文本框textarea一行一个
Jun 03 #PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 #PHP
php数组中包含中文的排序方法
Jun 03 #PHP
php实现文件下载实例分享
Jun 02 #PHP
php+js实现异步图片上传实例分享
Jun 02 #PHP
php实例分享之html转为rtf格式
Jun 02 #PHP
You might like
实用函数5
2007/11/08 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
js切换光标示例代码
2013/10/10 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
华为的Java面试题
2014/03/07 面试题
机械制造专业毕业生求职信
2014/03/02 职场文书
元旦晚会感言
2014/03/12 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
500字小学生检讨书
2015/02/19 职场文书
怎样写好工作计划
2019/04/10 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis