PHP实现提取多维数组指定一列的方法总结


Posted in PHP onDecember 04, 2019

本文实例讲述了PHP实现提取多维数组指定一列的方法。分享给大家供大家参考,具体如下:

PHP中对多维数组特定列的提取,是个很常用的功能,正因为如此,PHP在5.5.0版本之后,添加了一个专用的函数array_column()。当然,如果你的PHP版本低于5.5.0,就得用别的方法处理了。

例如,对于以下这个数组:

$user = array(
 '0' => array('id' => 100, 'username' => 'a1'),
 '1' => array('id' => 101, 'username' => 'a2'),
 '2' => array('id' => 102, 'username' => 'a3'),
 '3' => array('id' => 103, 'username' => 'a4'),
 '4' => array('id' => 104, 'username' => 'a5'),
);

我们要提取其中的 usename 列,变成:

$username = array('a1', 'a2', 'a3', 'a4', 'a5');

方法有以下几种。

1 array_column函数法

用PHP内置的 array_column() 函数是最简单的方法,限制是PHP版本必须是5.5.0及以上版本,方法:

$username = array_column($user, 'username');

2 array_walk函数法

array_walk()函数使用用户自定义函数对数组中的每个元素做回调处理,实现当前功能的方法:

$username = array();
array_walk($user, function($value, $key) use (&$username){
 $username[] = $value['username'];
});

3 array_map函数法

array_map()函数和array_walk() 作用类似,将回调函数作用到给定数组的单元上。

$username = array();
array_map(function($value) use (&$username){
 $username[] = $value['username'];
}, $user);

实际使用时,我们可以用array_map()写出和PHP内置array_column()一样功能的函数:

/**
 * 获取二维数组指定的一列,并以一维数组格式返回
 * 作用和PHP5.5.0中的array_column()函数一样
 * @param $input array 需要取出数组列的多维数组(或结果集)
 * @param $column_key string 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组
 * @param $index_key string 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
 * @return array|null
 */
function array_column($input, $column_key, $index_key = null) {
 $arr = array_map(function($d) use ($column_key, $index_key) {
  if (!isset($d[$column_key])) {
   return null;
  }
  if ($index_key !== null) {
   return array($d[$index_key] => $d[$column_key]);
  }
  return $d[$column_key];
 }, $input);
 if ($index_key !== null) {
  $tmp = array();
  foreach ($arr as $ar) {
   $tmp[key($ar)] = current($ar);
  }
  $arr = $tmp;
 }
 return $arr;
}

4 foreach循环法

foreach循环相对上面的方法效率稍微低一些,但简单容易理解。

$username = array();
foreach ($user as $value) {
 $username[] = $value['username'];
}

5 array_map变种

方法如下,意为把$user数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组$username的键仍是原数组$user的键,如下。

$username = array_map('array_shift', $user);

注意:该功能会获取$user中的 id 列,而不是 username 列。

另外,如果需要获取二维数组每一项的开头列或结尾列,也可以这样做:

$username = array_map('reset', $user);
$username = array_map('end', $user);

这三个变种方法作用比较局限,仅在获取第一列或最后一列的时候有用,在复杂的数组中就难以发挥作用了。

参考资料:

  1. php获取二维数组中某一列的值集合
  2. php 快速的对二维数组某一列进行组装的方法

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php miniBB中文乱码问题解决方法
Nov 25 PHP
php向js函数传参的几种方法
Aug 10 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
php实现简单加入购物车功能
Mar 07 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 #PHP
PHP实现发送微博消息功能完整示例
Dec 04 #PHP
PHP连续签到功能实现方法详解
Dec 04 #PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 #PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 #PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 #PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 #PHP
You might like
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
动态控制Table的js代码
2007/03/07 Javascript
更正确的asp冒泡排序
2007/05/24 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
vue中轮训器的使用
2019/01/27 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
python中map()与zip()操作方法
2016/02/27 Python
Python匹配中文的正则表达式
2016/05/11 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Django模板语言 Tags使用详解
2019/09/09 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
董事长秘书工作职责
2014/06/10 职场文书
政府个人对照检查材料
2014/08/28 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
网吧管理制度范本
2015/08/05 职场文书
运动会广播稿50字
2015/08/19 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python