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 相关文章推荐
mysql 搜索之简单应用
Apr 27 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
php结合curl实现多线程抓取
Jul 09 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
Smarty变量用法详解
2016/05/11 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
javascript 写类方式之五
2009/07/05 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
深入解析Python编程中JSON模块的使用
2015/10/15 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
为什么需要版本控制
2016/10/28 面试题
经典导游欢迎词大全
2014/01/16 职场文书
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android