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 相关文章推荐
让你同时上传 1000 个文件 (一)
Oct 09 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
PHP实现合并discuz用户
Aug 05 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
php并发加锁示例
Oct 17 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
基于laravel缓冲cache的用法详解
Oct 23 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自动加载的两种实现方法
2010/06/21 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
提升python处理速度原理及方法实例
2019/12/25 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
AJax面试题
2014/11/25 面试题
教师自我鉴定范文
2013/11/10 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
医学求职自荐信
2014/06/21 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python