0

だから私はPHPドキュメントを介してPHPでファイルの読み取りと書き込みを行っていますが、私が完全に理解していなかった例があります:

http://php.net/manual/en/function.readdir.php

終わりに向かって、次のような例が表示されます。

<?php
if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "$entry\n";
        }
    }
    closedir($handle);
}
?>

どのような場合に読まれますか...

4

4 に答える 4

3

API呼び出しはreaddir、すべてのディレクトリを繰り返し処理します。したがって、現在のディレクトリ( " ."で示される)をループすると、無限ループになります。また、リストを現在のディレクトリ以下に制限するために、親ディレクトリ( ""で示される..)を反復処理することは避けられます。

お役に立てば幸いです。

于 2012-04-30T16:38:40.657 に答える
1

PHPを使用してディレクトリを読み取りたい場合は、このscandir関数を使用することをお勧めします。以下はscandirのデモンストレーションです

$path = __DIR__.'/images';
$contents = scandir($path);
foreach($contents as $current){
  if($current === '.' || $current === '..') continue ;
  if(is_dir("$path/$current")){
    echo 'I am a directory';
  } elseif($path[0] == '.'){
    echo "I am a file with a name starting with dot";
  } else {
    echo 'I am a file';
  }
}
于 2013-12-30T17:06:22.530 に答える
0

*nixで。は現在の作業ディレクトリであり、..はディレクトリの親です。ただし、前に「。」が付いているファイルまたはディレクトリ。隠されていると見なされるので、私は次のようなものを好みます:

...
if ($entry[0] !== '.') {
    echo "$entry\n";
}
...

これにより、ディレクトリツリーを「上」に解析したり、現在のディレクトリを無限にループしたり、隠しファイル/フォルダを無視したりすることがなくなります。

于 2012-04-30T16:56:37.777 に答える
0

UNIXファイルシステムで...、私が知る限り、道標のようなものだからです。とにかく、確かにこのPHP関数に。

それらをそこに保持してください。そうしないと、奇妙な結果(無限ループなど)が発生します。

于 2012-04-30T16:42:51.607 に答える