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 相关文章推荐
php4的session功能评述(一)
Oct 09 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
php中rename函数用法分析
Nov 15 PHP
yii用户注册表单验证实例
Dec 26 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
Laravel框架验证码类用法实例分析
Sep 11 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
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
JQuery动画和停止动画实例代码
2013/03/01 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
外联部演讲稿
2014/05/24 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
普通话演讲稿
2014/09/03 职场文书
新党章的学习心得体会
2014/11/07 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
浅谈Python数学建模之固定费用问题
2021/06/23 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL