2011-05-12 22 views
1

这是在我的index.php在网站的根目录的主体和localhost/sound/包含一堆随机命名为mp3文件。空白array_rand()当从目录中找到随机的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

确保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'; 

... 
+0

真,更新的代码 – 2011-05-12 18:29:43

+0

不幸的是,它似乎并没有改变什么,我试图在同一目录中使用MP3 PHP文件,所以我可以使用'default.mp3';但仍然没有显示出来,所查看的来源是相同的......发生了什么事? O.o – John 2011-05-12 18:51:10

+0

在'$ files'上做'var_dump',你看到了什么? – 2011-05-12 18:53:29

2

首先,确保你实际上得到了一些文件名。请注意,​​3210需要文件系统上的路径。路径/sound/*.mp3应该可能与sound/*.mp3(即相对于您的PHP脚本)或/var/www/html/sound/*.mp3(存储网络文件的绝对路径)类似。

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

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

其次,array_rand()返回一个随机数组键。你必须查找数组中键来获取相应的值:

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

感谢您的建议重新路径,我已经删除了第一/在那里(它是相对于PHP文件,但我不知道绝对路径,因为它托管不是服务器 - 我认为这是一个centos虚拟服务器你可以使用网址吗?) 我已经试过了你的两个建议,但最终的结果总是一样的。如果没有找到正确的页面,应该在页面上打印没有MP3?因为它不是,所查看的源代码是一样的... – John 2011-05-12 18:46:42