我使用了一个变量,它是通过在整个站点中从数组中选择一个单词(使用时间作为“随机”索引)来设置的。 一切都很好。
然而 - 在某些页面上,变量多次显示,每次显示相同的单词。
因为我已经对变量进行了硬编码(并且在页面加载时随机生成了它),所以将变量转换为函数而不是返回单词将是一件非常令人头痛的问题。 (出于某种原因,这并没有首先完成 - 没有考虑到重复。)
以下是问题: 有没有办法让变量每次调用时都改变它的值?
我正在思考
的内容<?php
$var = function returnNewWord(){
/* generate random word here */
return $ranWord;
}
?>
这不起作用 - 但它可能会让你知道我的意思。
任何人都知道这可能是怎么回事?谢谢你的帮助。
答案 0 :(得分:2)
这是真正可能的唯一方法,如果你把它变成一个类的实例:
<?php
class RandomThingy {
function __toString() {
$ranWord = mt_rand(1, 1000);
/* generate random word here */
return (string)$ranWord;
}
}
$var = new RandomThingy();
print $var;
print $var;
?>
答案 1 :(得分:0)
应该这样做。
<?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;
}
?>
答案 2 :(得分:-1)
如果存在有限的单词数组,则很有可能会为多个函数调用接收相同的输出。
如果你想获得完全随机的变量:
<?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;
?>