1、array_column
(
array
$input
,
mixed
$column_key
[,
mixed
$index_key
= null ] ) : array
返回多维数组中指定的一列 ,如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
input:需要取出数组列的多维数组(或结果集)
column_key:需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是 NULL ,此时将返回整个数组(配合 index_key参数来重置数组键的时候,非常管用)
index_key:作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
$records = array(
array(
'id' => 2135 ,
'first_name' => 'John' ,
'last_name' => 'Doe' ,
array(
'id' => 3245 ,
'first_name' => 'Sally' ,
'last_name' => 'Smith' ,
array(
'id' => 5342 ,
'first_name' => 'Jane' ,
'last_name' => 'Jones' ,
array(
'id' => 5623 ,
'first_name' => 'Peter' ,
'last_name' => 'Doe' ,
$first_names = array_column ( $records , 'first_name' );
* Array
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
$last_names = array_column ( $records , 'last_name' , 'id' );
* Array
[2135] => Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
进阶: array_column方法可以返回数组中指定一列,但不能返回多列,因此写了以下这个方法,支持返回数组中多列,参数调用与array_column相似。
* 返回数组中指定多列
* @param Array $input 需要取出数组列的多维数组
* @param String $column_keys 要取出的列名,逗号分隔,如不传则返回所有列
* @param String $index_key 作为返回数组的索引的列
* @return Array
function array_columns($input, $column_keys=null, $index_key=null){
$result = array();
$keys =isset($column_keys)? explode(',', $column_keys) : array();
if($input){
foreach($input as $k=>$v){
// 指定返回列
if($keys){
$tmp = array();
foreach($keys as $key){
$tmp[$key] = $v[$key];
}else{
$tmp = $v;
// 指定索引列
if(isset($index_key)){
$result[$v[$index_key]] = $tmp;
}else{
$result[] = $tmp;
return $result;
// 演示代码
$arr = array(
array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
echo '<pre>';
echo '指定返回列及索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession', 'id');
print_r($result);
echo PHP_EOL.'指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession');
print_r($result);
echo PHP_EOL.'不指定返回列,指定索引列'.PHP_EOL;
$result = array_columns($arr, null, 'id');
print_r($result);
echo PHP_EOL.'不指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr);
print_r($result);
* 指定返回列及索引列
Array
[1001] => Array
[name] => fdipzone
[profession] => programmer
[1002] => Array
[name] => terry
[profession] => designer
[1003] => Array
[name] => alex
[profession] => tester
指定返回列,不指定索引列
Array
[0] => Array
[name] => fdipzone
[profession] => programmer
[1] => Array
[name] => terry
[profession] => designer
[2] => Array
[name] => alex
[profession] => tester
不指定返回列,指定索引列
Array
[1001] => Array
[id] => 1001
[name] => fdipzone
[age] => 18
[profession] => programmer
[1002] => Array
[id] => 1002
[name] => terry
[age] => 19
[profession] => designer
[1003] => Array
[id] => 1003
[name] => alex
[age] => 20
[profession] => tester
不指定返回列,不指定索引列
Array
[0] => Array
[id] => 1001
[name] => fdipzone
[age] => 18
[profession] => programmer
[1] => Array
[id] => 1002
[name] => terry
[age] => 19
[profession] => designer
[2] => Array
[id] => 1003
[name] => alex
[age] => 20
[profession] => tester
1、array_column(array$input,mixed$column_key[,mixed$index_key= null] ) :array返回多维数组中指定的一列 ,如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。参数:input:需要取出数组列的多维数组(或结果集)column_key:需要返...
function array_columns(array $input, ?array $column_keys, $index_key = null)
if (empty($input)) {
return [];
if (empty($column_keys) && !isset($index_key)) {
return $input;
if (empty($column_keys)) {
return array_combi.
1、array_column(array$input,mixed$column_key[,mixed$index_key= null] ) :array
返回多维数组中指定的一列 ,如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
input:需要取出数组列的多维数组(或结果集)
column_key:需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是 NULL ,此时将返回整个数组(配合 i...
* 返回的值的一列$input阵列,确定由columnKey。或者,您可以提供一个indexKey指数的$input数组中的值从indexKey列返回的数组中的值。
* 像从数据库获取一列,但返回是数组(扩展:获取多列)
* @param array $input 一个多维数组(记录集),拉一列值
* @param mixed $columnK
记得刚入门SAS时候,有一次面试,其中有一道题目就是行列变换。当时作为一名最初学者自然不知道还有这种风骚操作,更不知道这种操作有什么用,面试的结果自然是不通过。后来知道了行列变换可以用proc transpose一键搞定,但其参数配置之复杂,每次使用都要重新学习,十分不方便(这也从侧面证明了该过程步之强大,涵盖范围之广)。再后来学习姚志勇老师的课程,姚老师教导我们,“要知其然知其所以然”,“任何过程步本质上是在程序后台运行数据步”,本着学以致用的原则,我们就在实际案例中练习一下。
假设我们经营着一家全国性大
array_column(array $input, mixed $column_key [, mixed $index_key = null ]) : array
- $input: 要搜索的多维数组
- $column_key: 要返回值的列,它可以是该列的数字索引或字符串键名
- $index_key: 可选参数,用来作为返回数组的索引/键的列,它可以是该列的数字索引或字符串键名。
返回值: 返回一个包含指定列的值的数组。
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
$first_names = array_column($records, 'first_name');
print_r($first_names);
// 输出: Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
注意: array_column 函数在 PHP 5.5 版本中被引入,如果使用的是更早的版本,则可以使用 array_map 和回调函数来实现类似的功能。