特定のディレクトリを除外するための php scandir() 関数の使用例

怪我咯
リリース: 2023-03-13 12:42:01
オリジナル
2380 人が閲覧しました

scandir() は、指定されたディレクトリ内のファイルとディレクトリの 配列を返します。 成功した場合は、ファイルとディレクトリの配列を返します。失敗した場合は FALSE を返します。 directory がディレクトリではない場合、E_WARNING レベルのエラーがスローされます。

構文

scandir(directory,sorting_order,context);
ログイン後にコピー
パラメータ説明
ディレクトリ必須。スキャンするディレクトリを指定します。
sorting_order

オプション。並べ替えの順序を指定します。デフォルトは 0 で、アルファベットの昇順を示します。

SCANDIR_SORT_DESCENDING または 1 に設定すると、アルファベットの降順で並べ替えることを意味します。

SCANDIR_SORT_NONE に設定すると、並べ替えられていない結果が返されます。

コンテキストオプション。ディレクトリハンドルの環境を指定します。 context は、ディレクトリ ストリームの動作を変更するオプションのセットです。

例:コードは次のとおりです:

<?php
print_r(scandir(&#39;test_directory&#39;));
?>
ログイン後にコピー

出力は次のとおりです:

Array
(
[0]=>.
[1]=>..
[2]=>1.txt
[3]=>2.txt
)
ログイン後にコピー

ほとんどの場合、次のようにディレクトリのファイルリスト配列のみが必要です:

Array
(
[0]=>1.txt
[1]=>2.txt
)
ログイン後にコピー

一般的には"." または ".." を除く配列項目は解決されます: コードは次のとおりです:

<?php
functionfind_all_files($dir)
{
    $root = scandir($dir);
    
foreach
($rootas$value)
    {
        if($value === &#39;.&#39; || $value === &#39;..&#39;){
            
continue
;
        }
        if(is_file("$dir/$value")){
            $result[] = "$dir/$value";
            continue;
        }
        foreach(find_all_files("$dir/$value")as$value)
        {
            $result[] = $value;
            }
        }
    
return
$result;
    }
?>
ログイン後にコピー

もう 1 つの方法は、array_diff 関数 を使用して、scandir 関数の実行によって取得された配列を削除することです: コードは次のとおりです:

<?php
$directory=&#39;/path/to/my/directory&#39;;
$scanned_directory=array_diff(scandir($directory),array(&#39;..&#39;,&#39;.&#39;));
?>
ログイン後にコピー

通常、ディレクトリのアクセス許可を制限する svn ファイル、または .htaccess およびその他のファイルのコード管理が発生します。したがって、array_diff 関数を使用してフィルタリングする方が便利です。

以上が特定のディレクトリを除外するための php scandir() 関数の使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート