合并数组

问题描述:

您好我有以下数组转换我的文章为基础指标一套新的列表...像水平到垂直的方式合并数组

mainArray['a'] = [1,2,3,4]; 
mainArray['b'] = [4,5,6,7]; 
mainArray['c'] = [7,8,9,10]; 
mainArray['d'] = [10,11,12,13]; 

我需要短期调度研究,以使它像

[1,4,7,10][2,5,8,11][3,6,9,12][4,7,10,13] 
+1

你尝试过这么远吗?结果是什么样的结构?一个字符串? – tima

+0

欢迎来到SO。请阅读:[如何创建一个最小,完整和可验证的示例](http://*.com/help/mcve)以及[我如何问一个好问题?](http://*.com/帮助/如何问) –

+0

它可以通过双重迭代mainArray来完成,但我不想迭代double,是否有任何简单的方法来创建4个独立的数组(垂直合并) –

这可能是你在找什么:

<?php 
$input = [ 
    'a' => [1,2,3,4], 
    'b' => [4,5,6,7], 
    'c' => [7,8,9,10], 
    'd' => [10,11,12,13] 
]; 
$output = []; 
array_walk($input, function($entry) use (&$output) { 
    foreach ($entry as $key=>$val) { 
     $output[$key][] = $val; 
    } 
}); 
print_r($output); 

的替代将是一个保守迭代(我认为这是丑陋的人,各种原因):

<?php 
$input = [ 
    'a' => [1,2,3,4], 
    'b' => [4,5,6,7], 
    'c' => [7,8,9,10], 
    'd' => [10,11,12,13] 
]; 
$output = []; 
for ($i=0; $i<count($input['a']); $i++) { 
    $output[] = array_column($input, $i); 
} 
print_r($output); 

以上代码的输出:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 4 
      [2] => 7 
      [3] => 10 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => 5 
      [2] => 8 
      [3] => 11 
     ) 

    [2] => Array 
     (
      [0] => 3 
      [1] => 6 
      [2] => 9 
      [3] => 12 
     ) 

    [3] => Array 
     (
      [0] => 4 
      [1] => 7 
      [2] => 10 
      [3] => 13 
     ) 

)