2013-03-07 166 views
3

我有3門陣列這樣的:重新組織PHP數組

數組1( [0] => VALUE1-1 [1] => VALUE1-2 [2] => VALUE1-3)

ARRAY2( [0] => VALUE2-1 [1] => VALUE2-2 [2] => VALUE2-3)

ARRAY3( [0] => VALUE3-1 [ 1] => VALUE3-2 [2] => VALUE3-3)

我想要做

Array4( [0] => VALUE1-1 [1] => VALUE2-1 [2這] => VALUE3-1)

Array5( [0] => VALUE1-2 [1] => VALUE2-2 [2] => VALUE3-2)

Array6( [0] => VALUE1-3 [1] => VALUE2-3 [2] => VALUE3-3)

有一種簡單的方法來做到這一點?

回答

0

這被稱爲transposing。如果你把數組1,2,3成二維數組,你可以使用這裏的答案:https://stackoverflow.com/a/3423692/206403

function transpose($array) { 
    array_unshift($array, null); 
    return call_user_func_array('array_map', $array); 
} 

然後你可以使用它像這樣:

$myArray = array(
    array('value 1-1', 'value 1-2', 'value 1-3'), 
    array('value 2-1', 'value 2-2', 'value 2-3'), 
    array('value 3-1', 'value 3-2', 'value 3-3') 
); 

$newArray = transpose($myArray); 

然後你可以單獨$newArray如果你想要的話,分成3個數組。

DEMO:http://codepad.org/N6tZgajt

編輯:這是與調用:

$newArray = array_map(null, $array1, $array2, $array3); 

編輯2:對於瘋狂的一行,你可以這樣做:

list($array4, $array5, $array6) = array_map(null, $array1, $array2, $array3); 
+0

謝謝。如果我在array1/array2/array3中有3個以上的值。有沒有一種方法來計數值(每個數組的數量相同)並列出創建的數組的數量? – user2145444 2013-03-07 18:29:33

+0

@ user2145444:像count($ newArray)''? – 2013-03-07 18:31:07