我有一个像这样结构的大阵列
$array = array(
[0] => array(
'labels' => array('a', 'b', 'c', [...]),
'values' => array('val A', 'val B', 'val C', [...])
),
[1] => array(
'labels' => array('d', 'e', 'f', [...]),
'values' => array('val D', 'val E', 'val F', [...])
),
[2] => array(
'labels' => array([...]),
'values' => array([...])
),
[...],
[n]
)
我想为每个键创建一个新数组,如下所示:
$labels = array('a', 'b', 'c', 'd', 'e', 'f', [...])
$values = array('val A', 'val B', 'val C', 'val D', 'val E', 'val F', [...])
我通常会使用array_merge
,但我不知道我将拥有多少阵列。
有没有办法在没有多次循环的情况下这样做?
谢谢
答案 0 :(得分:2)
类似的东西:
$labels = call_user_func_array('array_merge', array_column($array, 'labels'));
$values = call_user_func_array('array_merge', array_column($array, 'values'));
也许?
答案 1 :(得分:1)
如果你想在构建最终数组之前做一些操作,可以考虑这样的事情:
$labels = array();
$values = array();
$r = array_map(function($subArray) use(&$labels, &$values) {
// do some stuff here, maybe
$labels = array_merge($labels, $subArray['labels']);
$values = array_merge($values, $subArray['values']);
}, $array);