php array_rand()与多维数组

时间:2013-04-22 18:34:20

标签: php

我有一个数组,可以在几秒钟内关联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,它的定义是好的。)......我希望它是后者。

1 个答案:

答案 0 :(得分:1)

  

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

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


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

$x = rand(0, 9);

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

考虑从7中挑选rand

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

将打印777