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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
也谈php网站在线人数统计
Apr 09 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
php自定义apk安装包实例
Oct 20 PHP
php绘制圆形的方法
Jan 24 PHP
php获取当月最后一天函数分享
Feb 02 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
详解Yii2.0 rules验证规则集合
Mar 21 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
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
window.location 对象所包含的属性
2014/10/10 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
python mysqldb连接数据库
2009/03/16 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python实现在线音乐播放器
2017/03/03 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
电气工程师岗位职责
2014/01/01 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
优秀团员事迹材料
2014/12/25 职场文书
捐资助学感谢信
2015/01/21 职场文书
高中体育课教学反思
2016/02/16 职场文书
使用Python解决图表与画布的间距问题
2022/04/11 Python