2014-12-04 71 views
0

我有兩個橫幅,我在頁面上顯示,但他們沒有出現在刷新頁面上的平等時間。我希望他們在每個頁面刷新時都旋轉。現在banner1可以從10次刷新和banner2中顯示10次,甚至不會出現一次。旋轉兩個橫幅50/50

<?php 
    $banner1 = '<a href="BANNER1_URL" target="_blank"><img src="BANNER1_IMG_SRC" alt="BANNER1_ALT" title="BANNER1_TITLE"></a>'; 
    $banner2 = '<a href="BANNER2_URL" target="_blank"><img src="BANNER2_IMG_SRC" alt="BANNER2_ALT" title="BANNER2_TITLE"></a>'; 
    $banners = array($banner1, $banner2); 
    shuffle($banners); 
?> 
<div id="ban"> 
    <?php print $banners[0] ?> 
</div> 

我試過把例如rand(1,2)但頁面崩潰。這是我試過的

<?php 
    $banner1 = '<a href="BANNER1_URL" target="_blank"><img src="BANNER1_IMG_SRC" alt="BANNER1_ALT" title="BANNER1_TITLE"></a>'; 
    $banner2 = '<a href="BANNER2_URL" target="_blank"><img src="BANNER2_IMG_SRC" alt="BANNER2_ALT" title="BANNER2_TITLE"></a>'; 
    $banners = array($banner1, $banner2); 
    $num = rand (1,2); 
    shuffle($banners); 
?> 
<div id="ban"> 
    <?php print $num($banners[0]) ?> 
</div> 
+0

最後一個例子拋出的錯誤是什麼? – MLeFevre 2014-12-04 08:25:09

+0

'PHP致命錯誤:函數名稱必須是字符串...' – Goro 2014-12-04 08:26:08

+1

隨機挑選某物的事情是,同一個橫幅將連續顯示10次,其中一次顯示1024次,而平均顯示爲50次/ 50隨着時間的推移。你將不得不保留某種歷史,才能做更多的高級邏輯,以便下一個顯示哪條橫幅。 – MatsLindh 2014-12-04 08:26:55

回答

1

隨着你隨機得到的數字,你需要從橫幅列表中獲得該索引;

<?php 
    $banner1 = '<a href="BANNER1_URL" target="_blank"><img src="BANNER1_IMG_SRC" alt="BANNER1_ALT" title="BANNER1_TITLE"></a>'; 
    $banner2 = '<a href="BANNER2_URL" target="_blank"><img src="BANNER2_IMG_SRC" alt="BANNER2_ALT" title="BANNER2_TITLE"></a>'; 
    $banners = array($banner1, $banner2); 
    $num = rand (0,1); 
?> 
<div id="ban"> 
    <?php print $banners[$num] ?> 
</div> 

也改變你的「隨機生成器」來獲得0或1的指數,並刪除洗牌(由MatsLindh在評論中提到的)

編輯:正如意見中的要求,這裏是一個如何存儲在SESSION中顯示哪條橫幅然後顯示其他橫幅的例子。

<?php 
    $banner1 = ... 
    $banner2 = ... 
    $banners = array($banner1, $banner2); 
    $bannerIndex = 0; 
    if(isset($_SESSION['bannerIndex'])){ 
    $bannerIndex = (intval($_SESSION['bannerIndex']) + 1) % 2; 
    } 
    $_SESSION['bannerIndex'] = $bannerIndex; 
?> 
<div id="ban"> 
    <?php print $banners[$bannerIndex]; ?> 
</div> 

這只是給你一個想法,並沒有經過測試。

+1

有沒有需要'rand()'或不需要'shuffle' - 你不需要兩個。在這種情況下,只要執行'rand()'就足夠了(並且更有效)。 – MatsLindh 2014-12-04 08:27:51

+0

真的!剛剛複製的帖子,這些東西早上太早了:) – Sander 2014-12-04 08:29:29

+0

和以前一樣的結果。他們不是50/50 – Goro 2014-12-04 08:29:32