带有多维数组的php数组_rand()

带有多维数组的php数组_rand(),php,Php,我有一个数组,它以秒为单位关联mp3文件及其各自的长度 $playlist = array( array("song" => "01.mp3","min" => "91"), array("song" => "02.mp3","min" => "101"), array("song" => "03.mp3","min" => "143"), ar

我有一个数组,它以秒为单位关联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\u rand()
从播放列表中挑选了一首歌曲

$song = $playlist[array_rand($playlist)];
然后,稍后,我访问该数组中的值

echo $song['song'];

//Then somewhere else...

echo $song['min'];
我的问题是,每次我请求
$song
,它是会产生一个随机结果,还是每次页面加载只产生一次随机结果?(也就是说,一旦定义了$song,它就永远被定义了。)…我希望是后者

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

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


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

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

考虑从
rand
中选择
7

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

将打印
777

仅在创建时分配$song
,在该请求/变量生命周期的剩余时间内,它将保持不变。$song值在页面加载时初始化,而不是每次
echo $x;
echo $x;
echo $x;