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 相关文章推荐
Windows下安装Memcached的步骤说明
Apr 25 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
原生php实现excel文件读写的方法分析
Apr 25 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
jquery自定义显示消息数量
2017/12/19 jQuery
Node.js JSON模块用法实例分析
2019/01/04 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
详解Python中dict与set的使用
2015/08/10 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
python机器学习之神经网络(一)
2017/12/20 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
python面向对象 反射原理解析
2019/08/12 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
pandas中ix的使用详细讲解
2020/03/09 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
仓库组长岗位职责
2014/01/29 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android