3

我需要将 3 个数组合并为 1 个,同时以第二个数组的第一个条目跟在第一个数组的第一个条目之后的方式对新数组进行排序。

例子:

$array1 = array(dog, cat, mouse);
$array2 = array(table, chair, couch);
$array3 = array(car, bike, bus);

这些数组应生成以下数组:

$resultarray = array(dog, table, car, cat, chair, bike, mouse, couch, bus);

非常感谢您的回复!

4

3 回答 3

8

All you need is :

$resultarray = array();
foreach(array_map(null, $array1, $array2, $array3) as $set) {
    $resultarray = array_merge($resultarray, $set);
}
print_r($resultarray);

Output

Array
(
    [0] => dog
    [1] => table
    [2] => car
    [3] => cat
    [4] => chair
    [5] => bike
    [6] => mouse
    [7] => couch
    [8] => bus
)

See Live DEMO

Or Simple one line solution - @deceze

call_user_func_array('array_merge', array_map(null, $array1, $array2, $array3));

One Line DEMO

于 2013-05-22T09:26:57.610 回答
2

尝试这个 :

$array1 = array('dog', 'cat', 'mouse');
$array2 = array('table', 'chair', 'couch');
$array3 = array('car', 'bike', 'bus');

$result = call_user_func_array('array_merge', call_user_func_array('array_map', array(null,$array1,$array2,$array3)));

echo "<pre>";
print_r($result);

编辑:根据deceze评论:

$result = call_user_func_array('array_merge', array_map(null,$array1,$array2,$array3));

内部call_user_func_array被移除。

输出 :

Array
(
    [0] => dog
    [1] => table
    [2] => car
    [3] => cat
    [4] => chair
    [5] => bike
    [6] => mouse
    [7] => couch
    [8] => bus
)
于 2013-05-22T09:29:49.897 回答
1

只是另一个单行解决方案:

$result = array_reduce(array_map(null, $array1, $array2, $array3), 'array_merge', array());
于 2013-05-22T09:41:15.947 回答