PHP:递归遍历结果保存到多维数组

WBOY
リリース: 2016-06-06 20:46:17
オリジナル
1452 人が閲覧しました

请问,如何使用php实现递归遍历给定路径(比如:$path = c:)下的所有子目录,运行后能将目录名称保存为如下格式

<code>array
  'a' => 
    array
      0 => string 'a1' (length=2)
      1 => string 'a2' (length=2)
      2 => string 'a3' (length=2)
  'b' => 
    array
      'b1' => 
        array
          0 => string 'b11' (length=3)
          1 => string 'b12' (length=3)
      0 => string 'b2' (length=2)
  'c' => 
    array
      0 => string 'c1' (length=2)
      1 => string 'c2' (length=2)
      'c3' => 
        array
          0 => string 'c31' (length=3)
          1 => string 'c32' (length=3)
</code>
ログイン後にコピー
ログイン後にコピー

我目前实现的,只能将结果保存到一维数组中,代码如下:

<code>function get_subdir_path($path,&$dir_array,$sub_dir = TRUE)
{
    global $files_array;
    if (is_dir($path))
    {
        if($handle = opendir($path))
        {
            while (($file = readdir($handle))!=false)
            {
                if ($file !="." && $file != "..")
                {
                    $temp_path = $path ."/".$file;
                    if (is_dir($temp_path)){
                        array_push($dir_array,$temp_path);
                        if ($sub_dir==TRUE) {
                            get_subdir_path($temp_path,$dir_array);
                        }
                    }
                }
            }
        }
    }
}
</code>
ログイン後にコピー
ログイン後にコピー

类似如下图所示:
PHP:递归遍历结果保存到多维数组

回复内容:

请问,如何使用php实现递归遍历给定路径(比如:$path = c:)下的所有子目录,运行后能将目录名称保存为如下格式

<code>array
  'a' => 
    array
      0 => string 'a1' (length=2)
      1 => string 'a2' (length=2)
      2 => string 'a3' (length=2)
  'b' => 
    array
      'b1' => 
        array
          0 => string 'b11' (length=3)
          1 => string 'b12' (length=3)
      0 => string 'b2' (length=2)
  'c' => 
    array
      0 => string 'c1' (length=2)
      1 => string 'c2' (length=2)
      'c3' => 
        array
          0 => string 'c31' (length=3)
          1 => string 'c32' (length=3)
</code>
ログイン後にコピー
ログイン後にコピー

我目前实现的,只能将结果保存到一维数组中,代码如下:

<code>function get_subdir_path($path,&$dir_array,$sub_dir = TRUE)
{
    global $files_array;
    if (is_dir($path))
    {
        if($handle = opendir($path))
        {
            while (($file = readdir($handle))!=false)
            {
                if ($file !="." && $file != "..")
                {
                    $temp_path = $path ."/".$file;
                    if (is_dir($temp_path)){
                        array_push($dir_array,$temp_path);
                        if ($sub_dir==TRUE) {
                            get_subdir_path($temp_path,$dir_array);
                        }
                    }
                }
            }
        }
    }
}
</code>
ログイン後にコピー
ログイン後にコピー

类似如下图所示:
PHP:递归遍历结果保存到多维数组

今天刚刚说完一个人又来了一个范例。
少年,请问你看到最后面的一串花括号你头疼么?整整有8级以上的缩进啊,这还能让人看么!果断要差评好不好!

<code>function scan_rescursive($directory) {
    $res = array();
    foreach(glob("$directory/*") as $item) {
        if(is_dir($item)) {
            $folder = end(explode('/', $item));
            $res[$folder] = scan_rescursive($item);
            continue;
        }
        $res[] = basename($item);
    }
    return $res;
}
</code>
ログイン後にコピー
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!