php
  • arrays
  • echo
  • 2013-04-26 212 views 1 likes 
    1

    我想知道如何讓它變成3個變量從來沒有使用rand()相同的數字?如果變量等於變量變化一個變量

    <?php 
    $myAd[1] = '<a href="http://www.pegor.com">Free PHP Tutorials</a>'; 
    $myAd[2] = '<a href="http://www.lifestinks.info">Fast Facebook Proxy</a>'; 
    $myAd[3] = '<a href="http://www.mozilla.org">Fastest and Secure Web Browser</a>'; 
    
    $adId = rand(1,count($myAd)); 
    $adId2 = rand(1,count($myAd)); 
    $adId3 = rand(1,count($myAd)); 
    if ($adId === $adId2) { $adId = ($adId2 - 1) } 
    if ($adId === $adId3) { $adId = ($adId3 - 1) } 
    if ($adId2 === $adId3) { $adId2 = ($adId3 - 1) } 
    
    echo $myAd[$adId]; 
    echo '<br>'; 
    echo $myAd[$adId2]; 
    echo '<br>'; 
    echo $myAd[$adId3]; 
    ?> 
    

    簡而言之,我想完成的是我的網站在左欄中顯示3種產品。每次用戶刷新時,他們都會改變。我一直遇到的問題是隨機數生成的變量中有兩個是相同的。我怎樣才能讓它到達他們總是在不同號碼上登陸的地方,以便一次顯示3種不同的產品,而不是2個相同和1個不同的產品?注意:我將添加更多項目到數組中,這只是一個測試腳本,直到我找出來。

    +1

    退房['link'](http://stackoverflow.com/questions/16184116/random-show-20-of-60-php/16184189#16184189)和'列表()'施工。或['shuffle()'](http://php.net/manual/en/function.shuffle.php)。 – BlitZ 2013-04-26 08:21:33

    +0

    嗯,我真的不明白它。 我的代碼工作,如果我刪除所有的if語句。 唯一的問題是有時候2個顯示的項目將是相同的。 是否沒有可能說這個變量是否等於這個變量減去或添加這個? – VampireNews 2013-04-26 08:25:36

    +0

    你的代碼的主要問題是,有時(實際上,像2比3的機會)你會從1中扣除1,這將意味着0,並且$ myAd [0]中沒有任何內容。所以它會出錯。 – 2013-04-26 08:40:22

    回答

    1

    嘗試shuffle()array_slice()

    $myAd = array(); 
    $myAd[1] = '<a href="http://www.pegor.com">Free PHP Tutorials</a>'; 
    $myAd[2] = '<a href="http://www.lifestinks.info">Fast Facebook Proxy</a>'; 
    $myAd[3] = '<a href="http://www.mozilla.org">Fastest and Secure Web Browser</a>'; 
    // more of... 
    
    shuffle($myAd); 
    
    $myAd = array_slice($myAd, 0, 3); 
    
    foreach($myAd as $value){ 
        echo $value, '<br/>', PHP_EOL; 
    } 
    ?> 
    
    +0

    但是如果我在數組中有50個項目不會回顯所有50個項目? – VampireNews 2013-04-26 08:27:19

    +0

    @VampireNews然後,'array_slice()'幫助。 – BlitZ 2013-04-26 08:29:48

    +0

    現在就像一個魅力。謝謝。 – VampireNews 2013-04-26 08:35:15

    1
    $adId = rand(1, count($myAd)); 
    do 
        { $adId2 = rand(1, count($myAd)); } 
    while ($adId2 == $adId); 
    
    do 
        { $adId3 = rand(1, count($myAd)); } 
    while ($adId3 == $adId || $adId3 == $adId); 
    

    但最好使用shuffle()array_slice()

    0

    實例如何比較兩個,但可以改善的基本需要最

    $rnd1 = rand(0,9); 
    do { 
        $rnd2 = rand(0,9); 
    } while ($rnd1 == $rnd2); 
    

    首先,你需要把你的隨機變量,一個變量,然後執行,而其中,隨機1等於隨機2,你可以從你需要的方面做得更復雜。

    GBU

    +0

    當然,當數字取代廣告的範圍時,需要進行健全性檢查以確保實際上有足夠的廣告,否則會出現無限循環。 – 2013-04-26 08:42:45

    +0

    感謝@PaulGregory的解釋雖然它是一個簡單的解釋:) – 2013-04-26 08:44:13

    相關問題