ホームページ  >  記事  >  バックエンド開発  >  PHP 再帰的ディレクトリ トラバーサル実装プログラム_PHP チュートリアル

PHP 再帰的ディレクトリ トラバーサル実装プログラム_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:56:46844ブラウズ

PHP 自体には readdir 関数がありますが、この関数に基づいて、私のニーズを達成するために別の関数を作成しました。関数の原理は非常に単純で、主に再帰呼び出しを使用します。

コードは次のとおりです コードをコピー

クラスリストディレクトリ{
var $深さ;
var $ディレクトリ名;
var $list;
var $tostring;

関数リストdir($dir){
$this->dirname=$dir;
$this->深さ=0;
$this->tostring=””;
}

//結果を多次元配列に保存します
関数 getlist($dir=""){
if($dir==”")$dir=$this->ディレクトリ名;
$d=@dir($dir);
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->深さ+=1;
$this->getlist($path);
}その他{
$this->リスト[$this->深さ][]=$item;
}
}
}
$this->リスト[$this->深さ]['ディレクトリ']=$dir;
$this->深さ-=1;
$d->close();
$this->リストを返す;
}

//キャラクターの変身結果

関数tostring($dir=""){
if($dir==”")$dir=$this->ディレクトリ名;
$d=@dir($dir);
$this->tostring.=”

    n”;
    $this->tostring.=”ディレクトリ:”.$dir.”n”;
    while(false!==($item=$d->read()))
    {
    if($item!=”.”&&$item!=”..”)
    {
    $path=$dir.”/”.$item;
    if(is_dir($path)){
    $this->深さ+=1;
    $this->tostring($path);
    }その他{
    $this->tostring.=”
  • ”.$item.”
  • n”;
    }
    }
    }
    $this->深さ-=1;
    $d->close();
    $this->tostring.=”
n”;
$this->tostringを返す;
}
}
$wapdir=”jquery”;
$d=新しいリストディレクトリ($wapdir);
echo $d->tostring();
?>

複数レベルのディレクトリを再帰的に作成する

1. 最初に下位ディレクトリ div/css/layout が存在するかどうかを確認します。 2. div/css/layout の上位ディレクトリ div/css が存在するかどうかを確認します。存在しない場合は、再帰的に続行するパラメータとして div/css を使用します。


以下はプログラムコードです:

コードは次のとおりです コードをコピー

関数 mkdirs($dir)
{
if(!is_dir($dir))
{
if(!mkdirs(ディレクトリ名($dir))){
false を返します;
}
if(!mkdir($dir,0777)){
false を返します;
}
}
true を返します;
}
mkdirs('div/css/layout');


同じ考え方で、PHP は rmdir と unlink を使用して、複数レベルのディレクトリを再帰的に削除します。

関数rmdirs($dir)
{
$d = ディレクトリ($dir);
while (false !== ($child = $d->read())){
if($child != '.' && $child != '..'){
if(is_dir($dir.'/'.$child))
rmdirs($dir.'/'.$child);
else unlink($dir.'/'.$child);
}
}
$d->close();
rmdir($dir);
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631583.html技術記事 PHP 自体には readdir 関数がありますが、この関数に基づいて、私のニーズを実現するために別の関数を作成しました。関数の原理は非常にシンプルです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。