解析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下检测字符串是否是utf8编码的代码
Jun 28 PHP
zend framework多模块多布局配置
Feb 26 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
Feb 19 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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/11/12 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
python使用mailbox打印电子邮件的方法
2015/04/30 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
python PyTorch预训练示例
2018/02/11 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
python开发游戏的前期准备
2019/05/05 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python绘制规则网络图形实例
2019/12/09 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
学术会议邀请函范文
2014/01/22 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
如何写辞职书
2015/02/26 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android