所以我希望在5个不同的变量之间交替,但希望'load'在每个变量上相等。我已经看到它只用两个变量完成,并根据生成的随机数交替设置限制。但试图将这个想法扩展到五个变量。提前谢谢。
仅举例来说,我有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个变量之间进行切换同等” - 有一个平等的分配解决方案和一个随机解决方案。
请注意,您需要安装apc才能使等旋转解决方案正常工作。这是一个相当常见的php模块,如果您有权这样做,可以很容易地安装:
Redhat / centos:yum install php-apc
Ubuntu:sudo apt-get php-apc
如果您使用的是共享主机并且没有安装apc,那么这对您不起作用:(
<?php
//If you want perfectly equal distribution.
$variables = array('a', 'b', 'c', 'd', 'e');
if (!($this_var = apc_fetch('last'))) $this_var = 0;
echo $variables[$this_var];
$this_var++;
$this_var = $this_var % 5;
apc_store('last', $this_var);
//If you want random distribution
$variables = array('a', 'b', 'c', 'd', 'e');
$index = mt_rand(0, 4);
echo $variables[$index];
答案 1 :(得分: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>
标记添加到数组的示例,但您可以轻松地只向数组添加一些标识符。
答案 2 :(得分:0)
我建议使用Class来处理每个“对象”:
<?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”选择下一个“最高”权重。
您可以通过各种方法来影响体重,例如计数。这可能会影响下一步选择哪一个。