ecco qui

Codice PHP:
<?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 !== '.' AND $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
            }
          }
        }
      }
    }
  if (
$out=='file') return $file_list;
  if (
$out=='dir') return $dirs
  }

$dirs=list_elements("tua directory/subdir",'dir');
$fileslist_elements("tua directory/subdir",'file');

?>

in pratica alla funzione passi 2 valori:

1 - la cartella root da cui partire con la scansione
2 - che cosa vuoi ottenere come risultato (la lista dei files o le cartelle)

il tuto in un array


attento solo che la funzione è ricorsiva, ovvero legge nella cartella, nelle casottocartelle ecc..