什么是合并两个数组的优雅方法,使得生成的数组包含第一个数组中的两个项目,然后是第二个数组中的一个项目,以这种方式重复?
$array1 = ['A1', 'A2', 'A3', 'A4', 'A5']; // potentially longer
$array2 = ['B1', 'B2', 'B3', 'B4', 'B5']; // potentially longer
期望的结果:
['A1', 'A2', 'B1', 'A3', 'A4', 'B2', 'A5', 'B3', 'B4', 'B5']
我正在尝试使用带有多个计数器的 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++];
}
}
最佳答案
无论 $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>";
这个例子的输出是:
Array
(
[0] => A1
[1] => A2
[2] => BB1
[3] => A3
[4] => A4
[5] => BB2
[6] => A5
[7] => BB3
[8] => BB4
[9] => BB5
)
警告: key 未保留!
这是 PHP 5.4.x 代码,如果您没有,请将 $a 和 $b 变量中的 [] 替换为 array()。
关于php - 在另一个数组的每个第二个元素之后插入一个数组中的元素(一次一个)(非均匀压缩),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520272/