每次调用时更改变量值

Change variable value each time its called

我在整个站点中使用了一个变量,该变量是通过从数组中选择一个词(使用时间作为 "random" 索引)来设置的。 一切都很好。

但是 - 在某些页面上多次显示该变量,并且每次都显示相同的词。

因为我已经对变量进行了硬编码(并在页面加载时随机生成它),所以将变量更改为一个函数而不是 returns 这个词将是一件非常令人头疼的事情。 (最初没有这样做是有原因的——没有考虑重复。)

问题如下: 有没有办法让变量在每次调用时都改变它的值?

我在想

<?php
$var = function returnNewWord(){
      /* generate random word here */
      return $ranWord;
}
?>

这行不通 - 但它可能会让您了解我的意思。

有人知道这怎么可能吗?感谢您的帮助。

如果有一个有限的单词数组,您很可能会收到多个函数调用的相同输出。

如果你想获得完全随机变量:

 <?php
    function returnNewWord() {
        $length = 10;
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }
    $var = returnNewWord();
    echo $var;
    ?>

应该就可以了。

<?php
$array = array("foo", "bar", "hello", "world");
$var = function returnNewWord(){
      $ranIndex = rand(0, count($array));
      $ranWord = $array[$ranIndex];
      array_splice($array, $ranIndex, 1);
      return $ranWord;
}
?>

真正可行的唯一方法是将它变成 class:

的实例
<?php

class RandomThingy {

   function __toString() {

      $ranWord = mt_rand(1, 1000);
      /* generate random word here */
      return (string)$ranWord;

   }

}

$var = new RandomThingy();

print $var;
print $var;

?>