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并发对MYSQL造成压力的解决方法
Feb 21 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP代码重构方法漫谈
Apr 17 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
python装饰器练习题及答案
2019/11/01 Python
Django 批量插入数据的实现方法
2020/01/12 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
超市中秋节促销方案
2014/03/21 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
python图片灰度化处理的几种方法
2021/06/23 Python