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 相关文章推荐
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
php 注释规范
Mar 29 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php简单实现无限分类树形列表的方法
Mar 27 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
php中的登陆login实例代码
Jun 20 PHP
php 可变函数使用小结
Jun 12 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 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封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python不同系统中打开方法
2020/06/23 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
如何通过python检查文件是否被占用
2020/12/18 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
竞选班委演讲稿
2014/04/28 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
个人工作表现评价材料
2014/09/21 职场文书
医院领导班子整改方案
2014/10/01 职场文书
学校党支部承诺书
2015/04/30 职场文书
早会开场白台词大全
2015/06/01 职场文书
十七岁的单车观后感
2015/06/12 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python