例如,我喜欢3个以上不同的数组,其元素如下:
第一阵列
hello-1
hi-1
第二阵列
ok-two
hi-2
22-two
hello
第三阵列
hi-3rd
hello3
等等......
我想逐个按顺序组合这个数组。例如,上面3个数组的预期输出将是:
hello-1
ok-two
hi-3rd
hi-1
hi-2
hello3
22-two
hello
我试过了array_merge()
。但它在完整的第一个数组之后附加第二个数组,这不是我想要的,所以在这里我有点卡住,不知道我可以在这里使用哪些功能。任何提示或想法?
答案 0 :(得分:2)
这应该适合你:
首先,我将每个数组的第一个元素放入一个子数组,然后将第二个值放入下一个子数组,依此类推,得到这个数组结构:
Array
(
[0] => Array
(
[0] => hello-1
[1] => ok-two
[2] => hi-3rd
)
//...
)
在此之后,您可以使用array_walk_recursive()
循环遍历每个数组值,并将每个值都放入数组中。
<?php
$arr1 = [
"hello-1",
"hi-1",
];
$arr2 = [
"ok-two",
"hi-2",
"22-two",
"hello",
];
$arr3 = [
"hi-3rd",
"hello3",
];
$arr = call_user_func_array("array_map", [NULL, $arr1, $arr2, $arr3]);
$result = [];
array_walk_recursive($arr, function($v)use(&$result){
if(!is_null($v))
$result[] = $v;
});
print_r($result);
?>
输出:
Array
(
[0] => hello-1
[1] => ok-two
[2] => hi-3rd
[3] => hi-1
[4] => hi-2
[5] => hello3
[6] => 22-two
[7] => hello
)
答案 1 :(得分:0)
我有另一种解决此问题的方法
<?php
$arr1 = array(
"hello-1",
"hi-1");
$arr2 = array("ok-two",
"hi-2",
"22-two",
"hello");
$arr3 = array(
"hi-3rd",
"hello3");
$max = count($arr1);
$max = count($arr2) > $max ? count($arr2) : $max;
$max = count($arr3) > $max ? count($arr3) : $max;
$result = array();
for ($i = 0; $i < $max; $i++) {
if (isset($arr1[$i])) {
$result[] = $arr1[$i];
}
if (isset($arr2[$i])) {
$result[] = $arr2[$i];
}
if (isset($arr3[$i])) {
$result[] = $arr3[$i];
}
}
print_r($result);