3

他のすべてのファイルに触れたり取得したりせずに、ディレクトリ内の最初のファイルを取得したい。ファイル名は不明です。

1つの非常に短い方法は、次を使用して次のようになりますglob

$file = array_slice(glob('/directory/*.jpg'), 0, 1);

ただし、そのディレクトリに多くのファイルがある場合、オーバーヘッドが発生します。

他の方法はこの質問に対する答えですが、すべてループが含まれており、glob の例よりも長くなります。

PHP: ディレクトリ全体をスキャンせずに、ディレクトリから単一のファイルを取得するにはどうすればよいですか?

これを解決するための非常に短く効率的な方法はありますか?

4

3 に答える 3

4

おそらく完全に効率的ではありませんが、表示される最初の jpg だけが必要な場合は、

$dh = opendir('directory/');
while($filename = readdir($dh)) {
   if (substr($filename, -4) == '.jpg')) {
       break;
   }
}
于 2013-10-04T20:44:10.657 に答える
0

この関数は、任意のタイプの最初のファイル名を取得します。

function get_first_filename ($dir) {
  $d = dir($dir);
  while ($f = $d->read()){
    if (is_file($dir . '/' . $f)) { 
      $d->close();
      return $f;
    }
  }
}
于 2013-10-04T22:06:27.053 に答える