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 第一节 php简介
Apr 28 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
php文件上传类的分享
Jul 06 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
如何用PHP实现多线程编程
May 26 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
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
学习js所必须要知道的一些
2007/03/07 Javascript
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
投资协议书范本
2014/04/21 职场文书
电子商务专业自荐信
2014/06/02 职场文书
工厂见习报告范文
2014/10/31 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis