PHP在5个变量之间平均切换

时间:2013-10-07 21:29:29

标签: php

所以我希望在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].'"';

3 个答案:

答案 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”选择下一个“最高”权重。

您可以通过各种方法来影响体重,例如计数。这可能会影响下一步选择哪一个。