Отображать случайные файлы из каталога?

как отобразить случайные файлы из каталога? В приведенном ниже коде отображается только 1 случайный файл, на выходе должно быть 10 файлов.

<?php
$path = "/files";

$files = scandir($path);
shuffle($files);

for($i = 0; ($i < count($files)) && (!is_file($files[$i])); $i++);

echo $files[$i];
?>

person ipunkbali    schedule 21.12.2014    source источник
comment
возможный дубликат изображений PHP из каталога - случайный порядок   -  person    schedule 22.12.2014


Ответы (1)


for($i = 0; ($i < count($files)) && (!is_file($files[$i])); $i++);
                                                                 ^

Помещение точки с запятой завершает оператор цикла for, поэтому на самом деле он ничего не делает, а просто выполняет цикл до тех пор, пока условие не станет ложным. Удалите точку с запятой, чтобы исправить.

В качестве более наглядного примера возьмем следующий код:

for($i = 0; $i < 5; $i++);
    echo $i;

Это будет повторяться пять раз, так как оператор тела цикла for пуст (из-за разделителя оператора, точки с запятой). Поскольку отступ в PHP не имеет значения, echo $i будет выдаваться только один раз в конце цикла, когда $i == 5. Вы можете рассмотреть это лучше как следующее:

for($i = 0; $i < 5; $i++)
    ;
    echo $i;
person slugonamission    schedule 21.12.2014