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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
tp5框架的增删改查操作示例
Oct 31 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
python读取ini配置文件过程示范
2019/12/23 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
电大自我鉴定范文
2013/10/01 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
python基础之//、/与%的区别详解
2022/06/10 Python