假設,即我有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
)
不過,我認爲,這可能是效率低下s的array_shift()
s和if()
s在那裏出現太多次了。
問題:有沒有更有效的方法來做到這一點?
P.S:謝謝,但我真的不知道如何使用array_merge()
。這不是RTM問題。
我覺得你的輸出是不完全你的意思。你說每個'$ a'元素都必須跟着'$ b'元素。這意味着你的結果必須是[1,2,3,4,5,6,7,8] – david
'$ a'元素應該在'$ b'的每2個元素之後。如果不是,在什麼時間間隔之後,每個'$ a'跟隨'$ b'? – aaron
@aaron至少有一個'$ b',如果有'$ b'元素的話。 – BlitZ