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 表单提交给自己
Jul 24 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
PHP实现打包zip并下载功能
Jun 12 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实现数组递归转义的方法
2014/08/28 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP中的表达式简述
2016/05/29 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
python多进程重复加载的解决方式
2019/12/13 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python descriptor(描述符)的实现
2020/11/15 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
linux面试题参考答案(3)
2012/09/13 面试题