array_column 函数, 以及在PHP5.5之下的替代方法
array_column 函数, 是能够根据多维数组中共有的一个键值来提取多维数组中属于这个键的值
例如下面的数组:
$test = array(
0 => array(
'id' => 11,
'name'=>'zhangsan'
),
1 => array(
'id' => 22,
'name'=> 'lisi'
),
2 => array(
'id' => 33,
'name'=> 'wangmazi'
),
3 => array(
'id' => 44,
'name'=> 'zhaoliu'
)
);
要把他们提取到一个数组中, 那么就可以array_column()函数;
$newNameArray = array_column($test, "name");
打印结果:

如果要指定键值, 则
$newNameArray = array_column($test, "name", "id");//$test 操作的数组; 第一name 是 提取某个列的值; 第二个id表示用id来作为值得键
打印结果:

方便好用, 但是只能在php5.5以上, 而且如果第二个参数 column_name 为 数字, 将返回空.
下面的自定义函数很好的解决了这个问题:
/**
* array_column() // 不支持低版本;
* 以下方法兼容PHP低版本
*/
function _array_column(array $array, $column_key, $index_key=null){
$result = [];
foreach($array as $arr) {
if(!is_array($arr)) continue; if(is_null($column_key)){
$value = $arr;
}else{
$value = $arr[$column_key];
} if(!is_null($index_key)){
$key = $arr[$index_key];
$result[$key] = $value;
}else{
$result[] = $value;
}
}
return $result;
}
参数与array_column() 相同, 用法也相同, 支持任何索引形式.
转载:https://www.cnblogs.com/Zell-Dinch/articles/4580690.html
array_column 函数, 以及在PHP5.5之下的替代方法的更多相关文章
- SQL中EXCEPT函数在  Mysql 和 sqlServer   中的替代方法
		
示例摘自:极客代码:http://wiki.jikexueyuan.com/project/sql/useful-functions/except-clause.html EXCEPT 子句 EXCE ...
 - array_column() 函数[二维数组转为一维数组]
		
array_column() 函数 输出数组中某个键值的集合[二维数组转为一位数组] <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' =&g ...
 - 【C++实现python字符串函数库】strip、lstrip、rstrip方法
		
[C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...
 - C语言 数组做函数参数不传数组个数的遍历方法
		
//数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void ...
 - 表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
		
原文:表单验证的3个函数ISSET().empty().is_numeric()的使用方法 本文就简单讲一下php中表单验证的三个函数,应该比较常用吧,最后给一些示例,请看下文. ISSET();—— ...
 - js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:
		
js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法: var s = new MyString('hello'); s.length; s[0]; // " ...
 - C#实现为类和函数代码自动添加版权注释信息的方法
		
这篇文章主要介绍了C#实现为类和函数代码自动添加版权注释信息的方法,主要涉及安装文件的修改及函数注释模板的修改,需要的朋友可以参考下 本文实例讲述了C#实现为类和函数代码自动添加版权注释信息的方法 ...
 - javascript的函数、创建对象、封装、属性和方法、继承
		
转自原文javascript的函数.创建对象.封装.属性和方法.继承 一,function 从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法 如:functi ...
 - JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
		
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
 
随机推荐
- Android 文件的读取和写入
			
(1)openFileInput和openFileOutput的使用 文件的使用,注意最后要用finally给关闭掉. openFileOutput:(写入文件,如果没有文件名可以创建,这里不需要判断 ...
 - win10下nvidia控制面板看不到
			
64位win10,nvidia控制面板看不到,控制面板里没有,服务里也没有nvidia相关服务,但驱动已经安装了. 解决办法: 1.下载GeForce Experience并安装 . 2.通过GeFo ...
 - JAVA  springmvc 转换器
			
一.有时候springmvc给咱们提供的数据转换并不能转换所有类型比如说由字符串类型转换Date类型,这时候需要我们自定义转换器,帮助springmvc转换我们需要的类型. 二.1)定义我们的转换器: ...
 - JAVA框架  Spring 引入多个配置文件
			
1.如果配置文件比较长,可以分多个配置文件.有两种方式: 1)在主配置文件加标签<import/> <import resource="jd/com/other/appli ...
 - day58
			
JQ高级 一.选择器 1.css语法匹配 标签 | 类 | id | 交集 群组 | 后代 | 兄弟 伪类 | 属性 2.索引匹配 :eq(index) | :gt(index) | :lt(inde ...
 - bash 定时任务
			
time1=$(date +%s -d '2014-01-13 22:46:05') for((;;)) do time2=$(date +%s) time3=$((time1 - time2)) ] ...
 - Linux下MySQL安装与操作
			
sudo apt-get update //用于更新源,获取软件包列表 sudo apt-get upgrade //用于升级指定软件包 install //安装 remove //移除软件包 aut ...
 - R链接hive/oracle/mysql
			
Linux:R连接hive用的Rhive 1,重要 1,sudo R CMD javareconf 2,sudo R 3, 1+1 是否为2 3.1,>install.packages(&quo ...
 - 网络对抗技术 2017-2018-2 20152515 Exp5 MSF基础应用
			
1.实践内容(3.5分) 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路. 1.1一个主动攻击实践,如ms08_067; (1分) MS08-067漏洞攻击 这次使用 ...
 - 20155327 李百乾 Exp7 网络欺诈防范
			
20155327 李百乾 Exp7 网络欺诈防范 基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 就此次试验来看,被收到NDSspoof攻击,首先要被攻击机扫描,并被设置为目标,所 ...