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目录管理函数小结
Sep 10 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
php关闭warning问题的解决方法
May 17 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
PHP goto语句用法实例
Aug 06 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php eval函数一句话木马代码
2015/05/21 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
人事助理岗位职责
2013/11/18 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
北京申奥口号
2014/06/19 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
千手观音观后感
2015/06/03 职场文书
小学三年级作文之写景
2019/11/05 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL