2013-10-07 47 views
1

所以我期望在5個不同的變量之間交替,但是希望'負載'在每個變量上相等。我已經看到它只用兩個變量完成,並根據隨設定的極限生成的隨機數進行交替。但是試圖將這個想法擴展到五個變量。提前致謝。PHP在5個變量之間同等切換

只是爲了舉例的目的說我有5個圖像,並希望在100次測試後,每個圖像都被同等顯示。這是我能想到的最簡單的解釋方式。

這就是我如何做只有2個變量,但試圖考慮如何做到更多。

$ad1 = '<img src... >'; 
$ad2 = '<img src...2 >'; 

echo mt_rand(0, 1) ? $ad1 : $ad2; 

來源:PHP Switching between two variables equally without using database

所以這就是我要去只是想知道在不同的變量之間是平等的觀念。

$input = array("a", "b", "c", "d"); 
$rand_keys = array_rand($input); 
echo 'var key ="'.$input[$rand_keys].'"'; 
+0

目前還不清楚你想要完成什麼。你可以發佈一些示例代碼,並用更詳細的解釋更新你的問題嗎? –

+2

你有沒有試過'計數器%5'哪裏'計數器'增加每次訪問? –

+0

這就是所謂的「學習語言」,「陣列」和「['rand()'](http://php.net/manual/en/function.rand.php)」 – Bojangles

回答

2

如果你想有一個隨機挑出一組,你可以使用array_rand()工作。

$images = array('<img src="img1.png">', '<img src="img2.png">', '<img src="img3.png">', '<img src="img4.png">', '<img src="img5.png">'); 

$pick = array_rand($images); 

$pick將是$images陣列中的隨機密鑰。

這很容易擴展,因爲您可以繼續添加元素到數組中。在這裏,我當然遵循了將<img>標記添加到數組的示例,但您可以輕鬆地向數組添加一些標識符。

+0

刪除了我的並投了你的票,我總是忘記了所有'array_ *'函數;) – SamV

+0

這就是我基本上使用的。編輯我的問題,檢查代碼,並讓我知道你是否會改變我的代碼。 – Fogolicious

+1

@Fogolicious如果你只想要一個元素,你不需要'$ rand_keys = array_rand($ input,2)中的第二個參數;'你正在做什麼,返回一個帶有2個鍵的數組。沒有第二個參數,函數只返回一個鍵(不在數組中)。所以如果你明白這一點,那麼你應該沒問題。 –

0

我建議使用一類來處理每個「對象」:

<?php 
    ... 
    ... 
    class RandObjClass 
    { 
    var $myCounter = 1; 
    var $mySeed = time(); 
    var $myReference = "...path-to-image-file..."; # Image for example 
    function getWeight() { 
     srand($mySeed); 
     $myWeight = $this->myCounter * rand(); 
     return($myWeight); 
    } 
    setSeed($xSeed) { 
     $this->mySeed = $xSeed; 
    } 
    } 
... 
... 

填充x的數組「RandObjClass」對象,並使用「getWeight」選擇的「最高的下一個「體重。

你可以通過各種方法來玩重量,如計數。這可以影響接下來選擇哪個。

2

下面兩個選項,因爲你的問題的標題是「5個變量之間交換同樣」 - 有一個平均分配解決方案和一個隨機解決方案。

注意,您需要安裝apc才能使輪換解決方案正常工作。這是一個相當普遍的PHP模塊,並可以很容易地安裝,如果你有這樣的權限:

紅帽/ CentOS的:百勝安裝PHP-APC

的Ubuntu:sudo易於得到PHP-APC

如果您使用的共享主機和他們沒有APC安裝,那麼這將不會爲你:(