spero di aver capito la tua esigenza

questa è una funzione che utilizzo per legger eil contenuto di una directory per tuttal la sua profondità... non utilizza nessuna ricorsione

spero ti possa dare un buono spunto

Codice PHP:
function list_elements($dir,$out
  {
  
$file_list '';
  
$stack[] = $dir;
  while (
$stack
    {
    
$current_dir array_pop($stack);
    if (
$dh opendir($current_dir)) 
      {
      while ((
$file readdir($dh)) !== false
        {
        if (
$file !== '.' && $file !== '..'
          {
          
$current_file "{$current_dir}/{$file}";
          if (
is_file($current_file)) 
            {
            
$file_list[] = "{$current_dir}/{$file}";
            } 
          elseif (
is_dir($current_file)) 
            {
            
$stack[] = $current_file;
            
$dirs[]=$current_file//l' array delle directory
            
}
          }
        }
      }
    }
  if (
$out=='file') return $file_list;
  if (
$out=='dir')  return $dirs;
  }