PHP获取二维数组中某一列的值集合


Posted in PHP onDecember 25, 2015

PHP还是比较常用的,于是我研究了一下PHP二维数组。在处理php数组的时候,有一种需求特别的频繁,如下二维数组:

$arr = array(
1=>array(
'id' => 5,
'name' => '张三'
),
2=>array(
'id' => 6,
'name' => '李四'
)
);

目的就是要取到key为name的集合,得到这个结果:

$arr2 = array(
0=>'张三',
1=>'李四'
);

这里有几种方法:

1:最简单的,foreach遍历数组:

foreach ($arr as $key => $value) {
$arr2[] = $value['name'];
}

2:代码量稍微少一点的代码,使用了 array_map 这个php方法:

$arr2 = array_map('array_shift',$arr);

意为把$arr数组的每一项值的开头的值移出,并返回被移出的每一项值中被移出的值,注意此时新数组$arr2的键仍是原数组$arr的键

2.1:在方法2的基础上,可以稍微开一下脑洞,如果需要获取的是二维数组的每一项的开头列或结尾列,也可以这样做:

$arr2 = array_map('reset',$arr);
$arr2 = array_map('end',$arr);

哈哈,也是很方便的

3:还可以使用 array_reduc e方法,不过代码略多,不过这个方法的想象空间(针对别的数组取值操作)还是蛮大的:

$arr2 = array_reduce($arr, create_function('$result, $v', '$result[] = $v["name"];return $result;'));

array_reduce方法用回调函数迭代地将对数组的值进行操作,而create_function用于一个匿名方法做回调用,这个匿名方法的参数$result为上一次迭代产生的值,$v是当前的值,内部实现既为获取到数组$arr每一项的”name”的值并push到新$result数组;

4:最后这个终极方法实在是太爽了,一个方法就搞定,而且非常灵活:

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

第二个参数为想要获取的那一列的键名,是不是很方便呢,不过这个方法有个限制,就是php版本必须 >= 5.5.0,在陈旧项目中使用这个方法还是得斟酌一下哈

PS: php中遍历二维数组的几种方式

<?php
//使用for循环遍历
$arr2=array(array("张三","20","男"),array("李四","25","男"),array("王五","19","女"),array("赵六","25","女"));
echo "<table border=2 bordercolor=red><tr><td>姓名</td><td>年龄</td& gt;<td>性别</td></tr>";
for($i=0;$i<4;$i++){
echo "<tr>";
for($j=0;$j<3;$j++){
  echo "<td>";
  echo $arr2[$i][$j];
  echo "</td>";
}
echo "</tr>";
echo "<br>";
}
echo "</table>";
?>
//使用foreach遍历
<?php
$arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'),
  'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'),
  'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'),
  'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女'));
foreach($arr as $k=>$val){
  echo $val['name'].$val['age'].$val['sex']."<br>";
}
echo "<p>";
?>
<?php
$arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'),
  'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'),
  'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'),
  'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女'));
foreach($arr as $key=>$value){
foreach($value as $key2=>$value2){
  echo $value2;
}
echo "<br>";
}
?>
PHP 相关文章推荐
php 高性能书写
Dec 11 PHP
PHP 时间日期操作实战
Aug 26 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
dedecms集成财付通支付接口
Dec 28 PHP
php自定义hash函数实例
May 05 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 #PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 #PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 #PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 #PHP
smarty高级特性之对象的使用方法
Dec 25 #PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 #PHP
smarty高级特性之过滤器的使用方法
Dec 25 #PHP
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python入门学习指南分享
2018/04/11 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
django创建css文件夹的具体方法
2020/07/31 Python
介绍一下UNIX启动过程
2013/11/14 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
建房协议书
2014/04/11 职场文书
化工操作工岗位职责
2014/04/29 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS