0

我有一个以秒为单位关联 mp3 文件及其各自长度的数组

$playlist = array(  array("song" => "01.mp3","min" => "91"),
                   array("song" => "02.mp3","min" => "101"),
                   array("song" => "03.mp3","min" => "143"),
                   array("song" => "04.mp3","min" => "143"),
                   array("song" => "05.mp3","min" => "151")
            );

我从播放列表中挑选一首歌array_rand()...

$song = $playlist[array_rand($playlist)];

然后,稍后,我访问该数组中的值...

echo $song['song'];

//Then somewhere else...

echo $song['min'];

我的问题是,每次我请求$song时,它会产生随机结果,还是每次页面加载只产生一次随机结果?(即,一旦 $song 被定义,它就被定义好了。) ...我希望是后者。

4

1 回答 1

1

我的问题是,每次我请求 $song 时,它会产生随机结果,还是每次页面加载只产生一次随机结果?

不,不会的。每次调用该函数时,它都会产生一个随机结果。array_rand如果您在每次页面加载时调用它一次,那么是的,每次加载页面时它只会产生一个随机结果。


通常,每次访问变量时,您很可能不会在该特定行中更改它。特别是,简化您的示例(rand从指定的最小值到最大值选择一个数字):

$x = rand(0, 9);

如果选择了一个数字,比如说7,那么多次访问$x不会改变它的值。只有显式$x = y赋值(或将其传递给对其有副作用的类或函数)可能会更改其值。

考虑7rand:

echo $x;
echo $x;
echo $x;

将打印777

于 2013-04-22T18:36:18.250 回答