2015-03-02 41 views
0

我有兩個數組:PHP合併數組,但只有第二個數組是隨機的

$divs = array('One','Two','Three','Four','Five','Six'); 
$ads = array ('Ad1', 'Ad2', 'Ad3'); 

我想合併這樣的:

$mix_divs = array_merge($divs, $reklama); 

但是,$ div的必須留在同一個地方之間這個地方我需要隨機添加$ ads數組。

shuffle($ads); 

最後輸入必須是這樣的:

$mix_divs = array('One','Two','Ad2','Three','Four','Ad3','Five','Six','Ad1'); 

$mix_divs = array('Ad2','One','Two','Ad1','Three','Four','Five','Ad3','Six'); 

$廣告必須是隨機插入。

我該怎麼做?由於

+0

如果你w ant元素保持原位,你不是在尋找array_merge,你想使用array_splice來注入$ ads數組元素。 – castis 2015-03-02 21:38:11

+0

您尚未完全定義您的問題:是否總是有六個div和三個廣告?兩個廣告之間總是需要兩個div嗎? – 2015-03-02 21:53:30

回答

1

你只需要插入每個廣告中的隨機位置中的div:

$divs = array('One','Two','Three','Four','Five','Six'); 
$ads = array ('Ad1', 'Ad2', 'Ad3'); 

$newArray = array_merge($divs); 
for ($i = 0; $i < count($ads); $i++) { 
    $position = rand(0, count($newArray)); 
    array_splice($newArray, $position, 0, $ads[$i]); 
} 

我只是試圖print_r($newArray)它給了我:

Array 
(
    [0] => One 
    [1] => Two 
    [2] => Three 
    [3] => Ad2 
    [4] => Four 
    [5] => Ad1 
    [6] => Five 
    [7] => Ad3 
    [8] => Six 
) 
+0

你是最棒的!非常感謝! – Aleksandar 2015-03-02 22:05:52

+0

不客氣! – 2015-03-02 22:07:36

1
$divs = array('One','Two','Three','Four','Five','Six'); 
$ads = array('Ad1', 'Ad2', 'Ad3'); 

shuffle($ads); 
while ($ads) array_splice($divs, array_rand($divs), 0, array_pop($ads)); 

print_r($divs); 

輸出:

Array 
(
    [0] => Ad1 
    [1] => One 
    [2] => Two 
    [3] => Ad3 
    [4] => Three 
    [5] => Four 
    [6] => Five 
    [7] => Ad2 
    [8] => Six 
)