假设我有 3 个数组:
$a = [ 1, 2, 3 ]; // victim #1
$b = [ 4, 5, 6, 7, 8]; // victim #2
$result = []; // result
我需要合并$a
,并且$b
按这样的顺序,数组的每个元素都$a
应该跟着数组的元素$b
。然而,数组的元素$b
可能会彼此跟随。
例如:
1 4 2 5 6 3 7 8
我试过这个:
while($a || $b)
{
$bool = rand(1, 100) >= 50;
if($a)
{
$result[] = array_shift($a);
}
if($b)
{
$result[] = array_shift($b);
}
if($bool && $b)
{
$result[] = array_shift($b);
}
}
这给出了所需的输出:
Array
(
[0] => 1
[1] => 4
[2] => 5
[3] => 2
[4] => 6
[5] => 7
[6] => 3
[7] => 8
)
但是,我认为它可能效率低下,因为array_shift()
s 和if()
s 在那里出现的次数太多。
问题: 有没有更有效的方法来做到这一点?
PS:谢谢,但我确实知道如何使用array_merge()
. 这不是RTM问题。