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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
PHP个人网站架设连环讲(三)
Oct 09 PHP
实用函数3
Nov 08 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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为php增加openssl模块的方法
2011/06/14 PHP
PHP 第一节 php简介
2012/04/28 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
python实现感知机模型的示例
2020/09/30 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
动态密码技术
2012/10/18 面试题
体育口号大全
2014/06/18 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2016年元旦主持词
2015/07/06 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电
Python中的 No Module named ***问题及解决
2022/07/23 Python