每次调用时更改变量值
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;
?>
我在整个站点中使用了一个变量,该变量是通过从数组中选择一个词(使用时间作为 "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;
?>