默认不能返回多个列。
函数语法:
$arr = array_column($array, $key, $index_key);
第二个参数,可以是NULL,此时返回所有的列(通常用于修改 key )
除了 NULL,可以传递字符串,返回该列数据。
第三个参数,是返回的数组 key 的规则,默认是索引(数字)
如果希望使用关联数组,再指定字符串,用于指定key。
对于一次返回多个列,比如原本 5 列数据,只读取其中的2列,该函数默认是不可以的,需要手动写一个循环读取。
例如:
/**
* 提取二维数组的一个或多个列(如果为一个值,则和 array_column 一模一样)
* @param $input -- 原数组
* @param null $column_keys
* @param null $index_key
* @return array
*/
function array_columns($input, $column_keys=null, $index_key=null){
$result = array();
//多个字符串用,分割 (可以直接传递array)
if(is_string($column_keys)){
$column_keys = explode(',', $column_keys);
}
//默认值
$keys = $column_keys ?: array();
if($input){
foreach($input as $k=>$v){
// 指定返回列
if($keys){
$tmp = array();
//多列时带列名的数组
if(count($keys)>1){
foreach($keys as $key){
$tmp[$key] = $v[$key];
}
}
//没有列名的基本元素(确保和 array_column 返回值一致)
else{
$tmp = $v[$keys[0]];
}
}
//返回所有列
else{
$tmp = $v;
}
//指定键名
if(isset($index_key)){
$result[$v[$index_key]] = $tmp;
}
//默认索引键名
else{
$result[] = $tmp;
}
}
}
return $result;
}