多次点击刷新,有时我会看到“null”。
此脚本循环访问文件夹以获取所有mp3文件并随机选择一个。 我究竟做错了什么?谢谢
if ($handle = opendir('../../hope/upload/php/files/')) {
while (false !== ($entry = readdir($handle))) {
$entry = trim($entry);
if(preg_match('/.mp3/', $entry))
{
$mp3[] = "$entry";
}
}
closedir($handle);
$count = count($mp3);
$rand = rand(0,$count -1); /// FIXED BY adding a -1 after count**
$mp3 = $mp3[$rand];
if($mp3)
{
echo "http://MyWebsite.com/hope/upload/php/files/$mp3";
}
else
{
echo "null";
}
}
答案 0 :(得分:2)
这种情况正在发生,因为数组索引从0
转到length - 1
,但您的脚本正在生成从0
到length
的随机索引。解决此问题的首选方法是使用array_rand()
:
$rand = array_rand($mp3);
$mp3 = $mp3[$rand];
答案 1 :(得分:1)
您的随机范围已经结束( max 整数是count()
的结果,并且记住数组的数量比基于序数0的数组中的最高索引高一个),你的代码看起来太冗长了。
...试
$mp3s = glob('../../hope/upload/php/files/*.mp3');
$key = array_rand($mp3s);
$randomMp3 = $mp3s[$key];