while循环没有显式增量/计数器(基本)

时间:2016-10-24 09:18:56

标签: php loops while-loop conditional-statements increment

我是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);

显然我错过了什么。这似乎很神奇。我期望一个无回路循环返回第一个文件......?

我希望尽管我的英语(对不起),问题仍然清楚。 提前谢谢了。

1 个答案:

答案 0 :(得分:2)

正如您在PHP documentation readdir中所看到的那样:

  

返回目录中下一个条目的名称。这些条目按文件系统存储的顺序返回。

因此,每次调用readdir时,都会返回该目录中的下一个文件。

例如,如果你有一个包含2个文件的目标:

  • one.txt
  • two.txt

首次致电readdir时,会返回one.txt。这与false不同,因此将执行while

中的代码

第二次致电readdir将返回two.txt,并与上述相同。

您致电readdir的第三次将返回false,因为该目录中没有更多文件。并且来自while的条件将不再成立,因此不再进入。