2016-10-02 119 views
0

我有一個使用簡單的PHP foreach循環生成的照片庫,我想在圖庫中插入廣告作爲圖像。從foreach循環中獲取一個php數組中的一個隨機密鑰

對廣告的陣列看起來像這樣:

$links = array(
    'http://a.com' => 'a.jpg', 
    'http://b.com' => 'b.jpg', 
    'http://c.com' => 'c.jpg', 
); 

現在我需要的link + image單對從這個陣列,同時還迭代每x量之後foreach循環中。

所以我也許應該做它在這裏:

if($count % 5 == 0){ 
//get random item 
} 
$count++; 

$count = 0;住宿的foreach循環外。

我只是還沒有想出一種方法,從循環中隨機選擇個項目中的一個

基本上最終的結果應該是這樣的:

<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 

<a href="link"> 
<img src="picture"></img> 
</a> 

<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 

<a href="link"> 
<img src="picture"></img> 
</a> 

凡在一組img's中間的鏈路是一個從我的陣列和一組隨機選擇的img's是由我的foreach循環產生的。

到目前爲止,我只能夠把我的整個數組作爲鏈接後每5 img's這不是我所需要的。這個想法是通過照片庫「傳播出去」。

如果我一直工作太久或者是不可能的,我甚至不能確定...或者我接近它錯了嗎?

注:我不在乎廣告是否重複。

+1

所以你只想要一個,但你不在乎他們是否重複?我不太確定你想要的輸出。你能澄清嗎? –

回答

-1

編輯:重新讀你的問題(再次)後,似乎你已經應該工作的想法。你能顯示完整的代碼而不是一點點,所以我們可以確定實際出錯的地方嗎?


注:下面這裏的一切是我原來的答覆,這可能不是什麼OP實際要求。

不完全確定這是否是您要查找的內容,因爲問題並不完全清楚。但我有一個猜想,你可以做這樣的事情...

$links = shuffle($links); 
if($count % 5 == 0){ 
//get random item 
$output = array_pop($links); 
} 
$count++; 

從本質上講這是什麼做的,它會隨機排列的順序,那麼每5個元素(或任何價值你把若語句),將$ output設置爲數組最後一個元素的值,並刪除數組的最後一個元素,以使其不能再次使用。這樣,當下一次碰到if語句並且它的計算結果爲true時,您將獲取數組的最後一個元素,該元素不能是重複的值。

如果我誤解了你正在努力達到的目標,那麼請解釋清楚,我會很樂意調整我的答案。

0

在你開始循環,隨機播放廣告,確保你不破壞鍵:

$keys = array_keys($links); 
shuffle($keys); 
foreach($keys as $key) { 
    $links_shuffled[$key] = $links[$key]; 
} 

然後在循環中,您有:

if($count % 5 == 0){ 
    //get random item 
    $item = $links_shuffled[($count/5) % count($links)]; 
    // output link: 
    // ... 
} 
0

使用array_rand選擇隨機$鏈接元素每5次迭代:

$count = 0; 
foreach ($images as $image) { 
    if($count % 5 == 0){ 
     $addUrl = array_rand($links); 
     $addImage = $links[$addUrl] 
    } 
    $count++; 
} 
+0

這隻得到圖像,而不是網址? – ynef

+0

是真的。我剛剛編輯了我的答案。 array_rand返回一個鍵,關鍵是你的url,對吧? –