2013-03-07 94 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