(PHP 5, PHP 7)
scandir — 指定されたパスのファイルとディレクトリのリストを取得する
$directory
[, int $sorting_order = SCANDIR_SORT_ASCENDING
[, resource $context
]] )
directory 内のファイルおよびディレクトリを
配列で返します。
directory調べるディレクトリ。
sorting_order
デフォルトでは、ソート順はアルファベット昇順です。
オプションの sorting_order
に SCANDIR_SORT_DESCENDING を設定した場合、
ソート順はアルファベット降順になります。
SCANDIR_SORT_NONE を設定すると、
結果をソートせずに返します。
context
context パラメータの説明については、
マニュアルのストリーム
を参照ください。
成功した場合にファイル名の配列、失敗した場合に FALSE を返します。
directory がディレクトリではない場合は、
FALSE を返し、E_WARNING レベルのエラーを
発行します。
| バージョン | 説明 |
|---|---|
| 5.4.0 |
sorting_order 定数
が追加されました。これまでのバージョンでは、非ゼロの値を指定するとすべて降順となっていました。
つまり、PHP のバージョンにかかわらず、次のようになります。
0 を指定すれば昇順、1 を指定すれば降順。
SCANDIR_SORT_NONE に対応する設定は、PHP 5.4.0 より前のバージョンにはありません。
|
例1 scandir() の簡単な例
<?php
$dir = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
?>
上の例の出力は、 たとえば以下のようになります。
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
例2 PHP 4 での scandir() の代用方法
<?php
$dir = "/tmp";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
print_r($files);
rsort($files);
print_r($files);
?>
上の例の出力は、 たとえば以下のようになります。
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
fopen wrappers が有効の場合、この関数のファイル名として URL を使用することができます。ファイル名の指定方法に関する詳細は fopen() を参照ください。 サポートするプロトコル/ラッパー には、さまざまなラッパーの機能やその使用法、 提供される定義済み変数などの情報がまとめられています。