PHP:合并未知数量的数组

时间:2016-01-25 12:49:24

标签: php arrays

我有一个像这样结构的大阵列

$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,但我不知道我将拥有多少阵列。

有没有办法在没有多次循环的情况下这样做?

谢谢

2 个答案:

答案 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);