【发布时间】:2017-03-06 00:22:35
【问题描述】:
我是 php 新手,它是我的第一语言。所以我的问题似乎很基础。
首先,while 循环的基本概念对我来说似乎很清楚。 只要 i 递增 (i++) 直到“崩溃条件”(i
但我真的想知道为什么下面没有任何显式增量的代码示例有效。
$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 运行 while 括号内的条件为真。在这种情况下,条件是($file = readdir($directory)),它尝试将新文件名从目录分配给 $file,并且 - 作为一个整体 - 如果没有可用的新文件,则返回 false。 但是: 基本代码的解释对于 SO 来说是完全偏离主题的——这不是一个教程网站。 [您选择的搜索引擎] 提供了相当多的内容,应该更适合您的需求。 -
因为 while 循环不需要有增量值,只要有 something 来打破循环,在这种情况下它是
$file设置为假的。 -
readdir 将指针前进,如果指针到达目录末尾,则返回false。
-
@NiyokoYuliawan:啊,好吧,我怀疑是这样的。想知道为什么德国 php-manual 没有提到它。这似乎太明显了。我越是感谢你的冲动。似乎类似于 mysqli 上下文中的 fetch 构造,这对我来说也很神奇。
-
@Franz 谢谢。我面前有三本初学者书籍,它们没有关闭从初学者示例到“内部指针”的桥梁并阅读手册。对不起,如果我跑题了,你帮了我很多。
标签: php loops while-loop conditional-statements increment