我该如何使用array_column()
函数来获取数组的第一列,而不是通过列名来获取呢?
我需要实现的效果类似于:
array_column($array,[0])
替换为:
array_column($array,"key");
我该如何使用array_column()
函数来获取数组的第一列,而不是通过列名来获取呢?
我需要实现的效果类似于:
array_column($array,[0])
替换为:
array_column($array,"key");
array_column()
函数可以使用整数作为索引来获取一个列,但是需要该整数键存在。否则,您需要确定第一个子数组的第一个键才能动态访问该列。$array = [
["foo" => "bar1", "hey" => "now"],
["foo" => "bar2", "hey" => "what"],
[0 => "zero", 1 => "one"]
];
var_export(array_column($array, 'foo')); // get the column by name
echo "\n---\n";
var_export(array_column($array, 0)); // don't need to be a string
echo "\n---\n";
var_export(array_column($array, key(current($array)))); // access the first subarray, access its key
echo "\n---\n";
var_export(array_column($array, array_shift(array_keys($array)))); // this generates a Notice, and damages the array
输出:
array (
0 => 'bar1',
1 => 'bar2',
)
---
array (
0 => 'zero',
)
---
array (
0 => 'bar1',
1 => 'bar2',
)
---
Notice: Only variables should be passed by reference in /in/hH79U on line 14
array (
0 => 'zero',
)
current()
或reset()
访问每行的第一个元素,但如果这些第一个元素具有不同的键,则这不是技术上的数据列。在演示中可以看到这种情况 - 您会无意中获取来自不同键的值。var_export(array_map('current', $array));
// ['bar1', 'bar2', 'zero']
除非您提前确定每个数组的第一个元素的键是什么,否则无法使用array_column
函数完成此操作。
您需要使用foreach()
循环并使用reset()
获取第一个元素。
array_column($array, array_keys($array)[0]);
- Gino Pane