array_column 函数简介传入一个参数,返回二维数组中指定列传入一个参数,指定列不一定存在的情况传入两个参数,且两个参数对应的列都存在且不重复如果第二个参数对应的列的数据有重复的情况如果对应键或者值的列数据不一定存在情况总结
array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
这是php.net中对该函数的说明。说的很明白却有那么的晕。还是先看看不同情况下的输出结果吧。一下所有的实例都以相同的数组$data输入为参考,输入如下。
$data = [
['id'=>1,'name'=>'A','city'=>'Beijin','like'=>'Red','info'=>''],
['id'=>2,'name'=>'B','city'=>'Shanghai','age'=>20,'info'=>'defualt'],
['id'=>2,'name'=>'C','city'=>'Guangdong','age'=>'30','info'=>'empty']
];
$d1 = array_column($data,'id');
print_r($d1);
输出内容是:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
当输入参数只有一个参数,且指定列都存在的情况下,array_column 函数的左右是取出二维数组的这一列的数据。
程序中,数据的结构不统一最容易导致bug的出现,因此需要验证在指定列数据缺失部分的情况函数的返回结果。原始数据age在第一个子数组中是不存在的。
$d2 = array_column($data,'age');
print_r($d2);
对于以上的内容输出结果如下:
Array
(
[0] => 20
[1] => 30
)
这中情况,会不不存该列的数据丢弃掉,返回数组的个数相比原来的数据减少了!!!因此,当传入一个参数,所指定的列不存在的情况,array_column将返回一个空数组。
$d1 = array_column($data,'id','name');
print_r($d1);
以上代码输出内容如下:
Array
(
[A] => 1
[B] => 2
[C] => 3
)
输出以第二个参数对应列为键,第一个参数对应列为值的关联数组。
$d1 = array_column($data,'id','city');
print_r($d1);
对于有重复情况的输入,输出内容如下:
Array
(
[Beijin] => 3
[Shanghai] => 2
)
相同键盘,保留最后一次的值。
$d1 = array_column($data,'age','name');
$d2 = array_column($data,'name','age');
print_r($d1);
print_r($d2);
以上代码输出内容如下:
Array
(
[B] => 20
[C] => 30
)
Array
(
[0] => A
[20] => B
[30] => C
)
如果值不存在,直接丢弃该子数组数据。当键不存在的情况,则以下标为0开始填充数组。如果输入的键根本不存在,则完全跟一个参数输入的时候一样
php 数组函数array_column 函数使用的作用: