在PHP中不对称地组合2个数组的优雅方式

wes*_*wes 5 php arrays

合并两个数组的优雅方法是什么,这样得到的数组有两个来自第一个数组的项,后跟第二个数组中的一个项,以这种方式重复?

数组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)

Gla*_*vić 5

无论 $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() 。