私はphpを初めて使っています。これは私の最初の言語です。だから私の質問は非常に基本的なようだ。明示的なインクリメント/カウンタなしのループwhile(basic)
まず、whileループの基本的な概念は私には明らかです。 "クラッシュ条件"(i < 10)が真になるまで増分(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ループwhile * while中括弧内の条件は真です。この場合の条件は '($ file = readdir($ directory))'です。これはディレクトリから新しいファイル名を$ fileに割り当てようとし、新しいファイルがない場合はfalseを返します。 **しかし:**基本的なコードの説明は、SOのためにかなりオフトピックです - これはチュートリアルのサイトではありません。 [あなたの選択の検索エンジン]はあなたのニーズに適したかなりのものを提供します。 –
whileループはインクリメンタル値を持つ必要はないので、ループを壊すために_something_がある限り、この場合は '$ file'がfalseに設定されています。 – Epodax
readdirはポインタを進め、ポインタがディレクトリの終わりに達するとfalseを返します。 –