PHPでディレクトリ内のディレクトリの一覧を再帰的に取得したい


お世話になります。  
PHPでディレクトリ内のディレクトリ一覧をすべて取得したく、下記のようなコードを作成しました。  
しかし、取得した結果が空の配列になってしまいます。  
下記のコードで間違っている点等、何かアドバイスをいただけますと幸いです。

## ソースコード

[code]

    function get_all_dir($dir){
      $list = array();
      $dirs = glob(rtrim($dir, "/")."/*", GLOB_ONLYDIR|GLOB_ERR);
      foreach ($dirs as $value){
        if (is_dir($value)){
          $list = array_merge($list, get_all_dir($value));
        }
      }
      return $list;
    }
    
    var_dump(get_all_dir("./test"));
    
[/code]

## 実行結果

[code]

    array(0) { }
    
[/code]

## 環境

PHP7.4.1

* * *

以上、よろしくお願いいたします。




[DirectoryIterator](https://www.php.net/manual/ja/class.directoryiterator.php)
を使って書いてみました。

[code]

    function get_all_dir($dir){
      $dirs = [];
      foreach (new DirectoryIterator($dir) as $fileInfo) {
        if($fileInfo->isDir() && ! $fileInfo->isDot() &&  ! $fileInfo->isLink()) {
          $d = rtrim($dir, '/').'/'.$fileInfo->getFilename();
          $dirs = array_merge($dirs, [$d], get_all_dir($d));
        }
      }
      return $dirs;
    }
    
    var_dump(get_all_dir('./test'));
    
[/code]




[DirectoryIterator](https://www.php.net/manual/ja/class.directoryiterator.php)
を使って書いてみました。

[code]

    function get_all_dir($dir){
      $dirs = [];
      foreach (new DirectoryIterator($dir) as $fileInfo) {
        if($fileInfo->isDir() && ! $fileInfo->isDot() &&  ! $fileInfo->isLink()) {
          $d = rtrim($dir, '/').'/'.$fileInfo->getFilename();
          $dirs = array_merge($dirs, [$d], get_all_dir($d));
        }
      }
      return $dirs;
    }
    
    var_dump(get_all_dir('./test'));
    
[/code]

