当从目录中获取随机mp3时,空白array_rand()

时间:2011-05-12 18:13:42

标签: php random directory mp3

这位于我网站根目录index.php的正文中,localhost/sound/包含一堆随机命名的mp3文件。

<?php
$files = glob("/sound/*.mp3");
$random = array_rand($files)
?>
<embed src="<?php echo $random ?>" 
width="140" height="40" autostart="true" loop="TRUE"> 
</embed>

当我在浏览器中查看页面的来源时显示

<embed src="" 
width="140" height="40" autostart="true" loop="TRUE"> 
</embed>

2 个答案:

答案 0 :(得分:2)

确保glob实际上正在返回匹配项:

$files = glob("/sound/*.mp3");
if (count($files) < 1)
  die('No files found');
$random = $files[array_rand($files)];

...

你可以做同样的事情,但提供一个后备默认值:

$files = glob("/sound/*.mp3");
$random = count($files) > 1 ? $files[array_rand($files)] : 'path/to/default.mp3';

...

答案 1 :(得分:2)

首先,确保您确实获得了一些文件名。请注意,glob()需要文件系统上的路径。路径/sound/*.mp3应该类似于sound/*.mp3(即相对于您的PHP脚本)或/var/www/html/sound/*.mp3(存储Web文件的绝对路径)。

您应该检查代码以验证您是否收到了文件。例如:

if ($files === FALSE || count($files) == 0)
{
    die('No MP3s!');
}

其次,array_rand()返回一个随机数组键。您必须在数组中查找该键以检索相应的值:

<embed src="<?php echo $files[$random] ?>"