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中cookie的作用域
Mar 27 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP中的string类型使用说明
Jul 27 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
php include和require的区别深入解析
Jun 17 PHP
PHP判断是否有Get参数的方法
May 05 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
深入理解PHP内核(一)
2015/11/10 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
js实现3D旋转相册
2020/08/02 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
Python补齐字符串长度的实例
2018/11/15 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python读取mysql数据绘制条形图
2020/03/25 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers