3 つの配列があるとします。
$a = [ 1, 2, 3 ]; // victim #1
$b = [ 4, 5, 6, 7, 8]; // victim #2
$result = []; // result
arrayの各要素の後に array の要素が続くように、マージする必要があり$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の問題ではありません