解析PHP之提取多维数组指定列的方法


Posted in PHP onJanuary 03, 2017

前言:有时候在开发中会遇到这样的问题,我们需要把有规律的多维数组按照纵向(列)取出,有下面的方法可用:

我们将拿下面的数组来处理:

$arr = array(
  '0' => array('id' => 1, 'name' => 'name1'),
  '1' => array('id' => 2, 'name' => 'name2'),
  '2' => array('id' => 3, 'name' => 'name3'),
  '3' => array('id' => 4, 'name' => 'name4'),
  '4' => array('id' => 5, 'name' => 'name5'),
);

//需要得到的结果:$name_list = array('name1', 'name2', 'name3', 'name4', 'name5');

1、使用array_column()

PHP在5.5.0版本之后,添加了一个专用的函数array_column()

方法:

$name_list = array_column($arr, 'name');

2、array_walk()方法

array_walk()使用用户自定义函数对数组中的每个元素做回调处理

$name_list = array();
array_walk($arr, function($value, $key) use (&$name_list ){
$name_list [] = $value['name'];
});

3、array_map()方法

array_map()函数和array_walk() 作用类似,将回调函数作用到给定数组的单元上

$name_list = array();
 array_map(function($value) use (&$name_list){
   $name_list[] = $value['name'];
 }, $arr);

4、foreach循环遍历方法

foreach()循环相对上面的方法效率稍微低一些

$name_list = array();
 foreach ($arr as $value) {
   $name_list[] = $value['name'];
 }

5、array_map变种

把$arr数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组$name_list的键仍是原数组$arr的键

$name_list = array_map('array_shift', $arr);
 //注意:该功能会获取$arr中的 id 列,而不是name 列。
 //另外,如果需要获取二维数组每一项的开头列或结尾列,也可以这样做:
 
 $name_list = array_map('reset', $arr);
 $name_list = array_map('end', $arr);
 
 //这三个变种方法作用比较局限,仅在获取第一列或最后一列的时候有用,在
 //复杂的数组中就难以发挥作用了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php生成缩略图的类代码
Oct 02 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
php修改文件上传限制方法汇总
Apr 07 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
PHP实现linux命令tail -f
Feb 22 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 #PHP
php cookie用户登录的详解及实例代码
Jan 03 #PHP
详解PHP安装mysql.so扩展的方法
Dec 31 #PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 #PHP
PHP文件操作详解
Dec 30 #PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 #PHP
CI框架实现框架前后端分离的方法详解
Dec 30 #PHP
You might like
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
python二维图制作的实例代码
2020/12/03 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
工作失误检讨书范文大全
2014/01/13 职场文书
太太口服液广告词
2014/03/20 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
学术会议开幕词
2016/03/03 职场文书
Python基础之数据结构详解
2021/04/28 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Java数据结构之堆(优先队列)
2022/05/20 Java/Android
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers