2017-08-10 92 views
-6

您好我有以下數組轉換我的文章爲基礎指標一套新的列表...像水平到垂直的方式合併數組

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://stackoverflow.com/help/mcve)以及[我如何問一個好問題?](http://stackoverflow.com/幫助/如何問) –

+0

它可以通過雙重迭代mainArray來完成,但我不想迭代double,是否有任何簡單的方法來創建4個獨立的數組(垂直合併) –

回答

0

這可能是你在找什麼:

<?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 
     ) 

)