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 preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
php生成txt文件标题及内容的方法
Jan 16 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 PHP
详解php用static方法的原因
Sep 12 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP二维数组分页2种实现方法解析
Jul 09 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 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设计模式中单例模式的应用分析
2013/05/15 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
python抓取网页内容示例分享
2014/02/24 Python
收集的几个Python小技巧分享
2014/11/22 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python实现一个简单的ping工具方法
2019/01/31 Python
详解python多线程之间的同步(一)
2019/04/03 Python
Django的models模型的具体使用
2019/07/15 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
关于Keras Dense层整理
2020/05/21 Python
python如何写try语句
2020/07/14 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
大学生新闻专业个人自我评价
2013/11/12 职场文书
读书月活动方案
2014/05/22 职场文书
创先争优一句话承诺
2014/05/29 职场文书
医院标语大全
2014/06/23 职场文书
新闻学专业求职信
2014/07/28 职场文书
房屋买卖协议样本
2014/11/16 职场文书