Я новичок в php, и это мой первый язык. Поэтому мой вопрос кажется очень простым.Хотя цикл без явного приращения/счетчика (базовый)
Сначала основная концепция цикла while кажется мне довольно понятной. Пока я увеличиваю (i ++) до тех пор, пока не станет «аварийным» (i < 10).
Но я действительно удивляюсь, почему работает следующий пример кода без какого-либо явного приращения.
$originals = "originale";
$thumbnails="thumbnails";
$directory = opendir($originale);
$images = array();
while(($file = readdir($directory)) !== false) {
if(preg_match("/\.jp?g$/i", $file)){
$images[] = $file;
}
}
echo "<pre>";
var_dump($images);
echo "</pre>";
closedir($directory);
Очевидно, что я что-то пропустил. Кажется, это волшебство. Я бы ожидал цикл без энтузиазма, который возвращает первый файл ...?
Я надеюсь, что, несмотря на мой английский (извините за это), вопрос становится понятным. Большое спасибо заранее.
'while'-loops run * while * условие внутри их фигурных скобок истинно. условие в этом случае равно '($ file = readdir ($ directory))', который пытается назначить новое имя файла из каталога в $ file и - в целом - возвращает false, если нет нового доступного файла. ** но: ** объяснение базового кода довольно не по теме для SO - это не учебный сайт. [поисковая система по вашему выбору] предоставляет немало, которые лучше подходят для ваших нужд. –
Поскольку в цикле нет необходимости иметь инкрементное значение, пока существует _something_, чтобы разбить цикл, в этом случае значение '$ file' равно false. – Epodax
readdir будет продвигать указатель, и если указатель достигнет конца каталога, он вернет false. –