PHP - 带有随机数的Echo变量?

时间:2017-06-02 17:31:01

标签: php

给出下面的3个变量,每个变量以数字结尾。我希望echo使用mt_rand(1,3)末尾的$fruit随机输出其中一个,因此php会随机输出其中一个。

<?php

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

echo $fruit.mt_rand(1,3);

我可以使用数组轻松完成,但我想知道如何使上述工作。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以将变量名称创建为字符串。你可以将它作为一行来完成,但我正在分解它以便你可以更容易地看到它......

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

答案 1 :(得分: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)];

答案 2 :(得分: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();