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 相关文章推荐
编译问题
Oct 09 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
Laravel中10个有用的用法小结
May 06 PHP
php如何把表单内容提交到数据库
Jul 08 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 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
自己前几天写的无限分类类
2007/02/14 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
百度地图API使用方法详解
2015/08/25 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python中的__slots__示例详解
2017/07/06 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
Python如何解除一个装饰器
2020/08/07 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
会计学自我鉴定
2014/02/06 职场文书
公司办公室岗位职责
2014/03/19 职场文书
运动会的口号
2014/06/09 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
java调用Restful接口的三种方法
2021/08/23 Java/Android