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代码
Jul 17 PHP
php 安全过滤函数代码
May 07 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PDO::_construct讲解
Jan 27 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
dedecms模板标签代码官方参考
2007/03/17 PHP
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
深入浅出php socket编程
2015/05/13 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
如何实现JS函数的重载
2006/09/22 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
Python字符串拼接六种方法介绍
2017/12/18 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
建筑工程自我鉴定
2013/10/18 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
珠宝店促销方案
2014/03/21 职场文书
团支部建设方案
2014/05/02 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
生物学专业求职信
2014/07/23 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
长江三峡导游词
2015/01/31 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers