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 相关文章推荐
967 个函式
Oct 09 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
解析PHP缓存函数的使用说明
May 10 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
PHP 读取和编写 XML
Nov 19 PHP
PHP动态柱状图实现方法
Mar 30 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
php将html转为图片的实现方法
May 19 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 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利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP实现简单登录界面
2019/10/23 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
window下eclipse安装python插件教程
2017/04/24 Python
python+opencv实现阈值分割
2018/12/26 Python
python 字典访问的三种方法小结
2019/12/05 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
运动会稿件100字
2014/02/21 职场文书
入职担保书范文
2014/05/21 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
工作失误检讨书
2015/01/26 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers