Хит обновления несколько раз, и иногда я получаю «null».около 20% времени неудачного сценария opendir. См. Пример
Этот скрипт проходит через папку, чтобы получить все 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";
}
}
Я мог бы загрузить файл с именем, например, как 'not.amp3.txt' и ваш код будет считать его одним. – alex
Операция 'preg_match()' также будет соответствовать 'notanmp3.exe', так как' .' соответствует любому символу. Предложение 'glob()' alex, вероятно, лучше всего, но вы также можете посмотреть в [pathinfo()] (http://php.net/pathinfo). –