我是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);
显然我错过了什么。这似乎很神奇。我期望一个无回路循环返回第一个文件......?
我希望尽管我的英语(对不起),问题仍然清楚。 提前谢谢了。
答案 0 :(得分:2)
正如您在PHP documentation readdir
中所看到的那样:
返回目录中下一个条目的名称。这些条目按文件系统存储的顺序返回。
因此,每次调用readdir
时,都会返回该目录中的下一个文件。
例如,如果你有一个包含2个文件的目标:
one.txt
two.txt
首次致电readdir
时,会返回one.txt
。这与false
不同,因此将执行while
第二次致电readdir
将返回two.txt
,并与上述相同。
您致电readdir
的第三次将返回false
,因为该目录中没有更多文件。并且来自while
的条件将不再成立,因此不再进入。