2017-06-02 103 views
0

給出以下3個變量,每個以數字結尾。我想通過使用mt_rand(1,3)$fruit年底echo了他們的一個隨機,所以PHP隨機輸出的3PHP - 使用隨機數回顯變量?

<?php 

$fruit1 = 'apple'; 
$fruit2 = 'banana'; 
$fruit3 = 'orange'; 

echo $fruit.mt_rand(1,3); 

我可以用一個數組做很容易,但我想知道如何獲得上述工作。任何想法?

回答

2

您可以使用雙美元符號從字符串變量得到:

$fruit1 = 'apple'; 
$fruit2 = 'banana'; 
$fruit3 = 'orange'; 

$variable = 'fruit'.mt_rand(1,3); 
echo $$variable; 

但更好是使用陣列:

$fruits = array(); 
$fruits[1] = 'apple'; 
$fruits[2] = 'banana'; 
$fruits[3] = 'orange'; 

echo $fruits[mt_rand(1,3)]; 
+0

謝謝你,它的工作原理是最接近我的語法(第一部分)。將在幾分鐘內接受答案,等待SO時間限制通過:) – Wonka

+1

如果您使用的數組有[array_rand](http://php.net/manual/function.array-rand.php)函數在PHP中。 –

2

您可以創建變量名稱作爲字符串。你可以做到這一點作爲一個線,但我打破它,所以你可以看到它更容易...

$var = "fruit"; 
$var.= rand(1,3); 
echo $$var; 
1

下面是使用array_rand的OOP方法():

類別:

class Test { 
    public $fruits; 
    public $fruit1; 
    public $fruit2; 
    public $fruit3; 

    public function __set($property, $value) 
    { 
     if(property_exists($this, $property)) { 
      $this->$property = $value; 
     } 
    } 

    public function pickOne() 
    { 
     $this->fruits = []; 

     foreach($this as $key => $value) { 
      if(!empty($value)) 
       $this->fruits[$key] = $value; 
     } 

     return array_rand($this->fruits, 1); 
    } 
} 

然後初始化它,設置的屬性值和回聲結果:

$pickOne = new Test; 
$pickOne->fruit1 = 'apple'; 
$pickOne->fruit2 = 'banana'; 
$pickOne->fruit3 = 'orange'; 

echo $pickOne->pickOne();