合并两个数组的优雅方法是什么,这样得到的数组有两个来自第一个数组的项,后跟第二个数组中的一个项,以这种方式重复?
数组1 = A1,A2,A3,A4,A5等
数组2 = B1,B2,B3,B4,B5等
结果= A1,A2,B1,A3,A4,B2,A5,A6,B3等.
我正在尝试使用带有多个计数器的for循环来完成它,但我不知道数组长度总是根据需要长或短.我很好奇:有更好的方法吗?
这是我目前正在做的简化版本:
$x = 0, $y = 0;
for($i=0; $i<$total_num_blocks; $i++) {
if ($i % 3) { // if there's a remainder, it's not an 'every 3rd' item
$result[$i] = $projects[$x++];
} else {
$result[$i] = $posts[$y++];
}
}
Run Code Online (Sandbox Code Playgroud)
无论 $a 和 $b 数组大小如何,此示例都将起作用。
<?php
$a = ['A1', 'A2', 'A3', 'A4', 'A5'];
$b = ['BB1', 'BB2', 'BB3', 'BB4', 'BB5'];
for ($i = 0; $i < count($b); $i++) {
array_splice($a, ($i+1)*2+$i, 0, $b[$i]);
}
echo "<pre>" . print_r($a, true) . "</pre>";
Run Code Online (Sandbox Code Playgroud)
这个例子的输出是:
Array
(
[0] => A1
[1] => A2
[2] => BB1
[3] => A3
[4] => A4
[5] => BB2
[6] => A5
[7] => BB3
[8] => BB4
[9] => BB5
)
Run Code Online (Sandbox Code Playgroud)
警告:密钥不会被保留!
这是 PHP 5.4.x 代码,如果没有,请将 $a 和 $b 变量中的 [] 替换为 array() 。