解析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 相关文章推荐
一个ftp类(ini.php)
Oct 09 PHP
php.ini中文版
Oct 09 PHP
php你的验证码安全码?
Jan 02 PHP
PHP之数组学习
May 29 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
php中Snoopy类用法实例
Jun 19 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 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/09/29 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
深入理解javascript的执行顺序
2014/04/04 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
js实现文字滚动效果
2016/03/03 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python通过加号运算符操作列表的方法
2015/07/28 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
基于Python正确读取资源文件
2020/09/14 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
一套软件测试笔试题
2014/07/25 面试题
学校三节实施方案
2014/06/09 职场文书
初三语文教学计划
2015/01/22 职场文书
红色电影观后感
2015/06/18 职场文书