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伪造referer突破网盘禁止外连的代码
Jun 15 PHP
php 表单验证实现代码
Mar 10 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
PHP生成随机密码类分享
Jun 25 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
php中二分法查找算法实例分析
Sep 22 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 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类包含的七种语法说明
2015/06/04 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
JS 建立对象的方法
2007/04/21 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
使用JS动态显示文本
2017/09/09 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
Unicode和Python的中文处理
2017/03/19 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
python代码过长的换行方法
2018/07/19 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
人身损害赔偿协议书
2016/03/22 职场文书