PDA

View Full Version : [PHP][Newbie] problema stampa array


Re_Kotc
27-08-2008, 18:59
ciao a tutti, ho scritto uno script php che in teoria dovrebbe ricevere come parametro una directory e poi salvarmi in un array i nomi di tutte le directory che trova al suo interno, per farlo mi sono appoggiato a una funzione che ho trovato online, ma c'è qualcosa che non funziona, vi posto il codice :

function elencaDirectory($dirname){

echo "<p>Sono all'inizio della funzione!</p>";
$counter = 0;
$arraydirectory=Array();
if(file_exists($dirname)){
$handle = opendir($dirname);
while (false !== ($dir = readdir($handle))) {



if(is_dir($dirname.$dir)){
array_push($arraydirectory,$dir);
$counter++;
print $counter;
print "counter aggiornato";
print "<br>";
}

}
$handle = closedir($handle);
}
sort($arraydirectory);


echo "<p>Sono alla fine della funzione!</p>";

return $arraydirectory;
}

//prima fase, salvo in arraydirectory l'elenco delle cartelle contenute nella cartella principale

$counter = 0;
$maindirectory = "C:/TESTMP3/";
$arraydirectory=array();
$arraydirectory=elencaDirectory($maindirectory);


$counter = count($arraydirectory);

for ($i=0; $i<$counter; $i++)
{
print $arraydirectory[$i] ;
print "<br>";


}

ho utilizzato la variabile counter all'interno della funzione elencafiles per vedere se iterava il numero corretto di volte..ma c'è qualcosa di strano, infatti come output ottengo:

1counter aggiornato
2counter aggiornato
3counter aggiornato
4counter aggiornato

Sono alla fine della funzione!

.
..
ale
djz

i nomi delle due cartelle sono corretti, ma il punto e i due puntini stampati cosa sarebbero??..e poi perchè il counter raggiunge il valore 4 se le directory contenute sono solo 2? ...thanks!

zoalord
27-08-2008, 21:50
Ciao,
in realtà lo script funziona, mi spiego:
"." e ".." sono i riferimenti alla directory corrente ed a quella padre ( la dir immediatamente superiore nell'albero, in pratica la cartella che contiene quella che passi alla funzione).
Ricapitolando:
. = riferimento alla directory corrente
.. = riferimento alla directory padre
ale
djz
quattro oggetti di tipo <DIR> , il contatore segna 4, i primi due vengono visti come directory a livello di filesystem, almeno sotto prompt dei comandi windows.
Se vuoi prova a fare questo test:

Da "Esegui", lancia "cmd", si apre il prompt dei comandi
digita cd C:\TEMPMP3 w premi invio
digita "dir" e premi invio

dovresti trovarti la lista delle sottodirectory contenute, inclusi i riferimenti di cui sopra.

Ciao

Re_Kotc
27-08-2008, 23:05
ah si è vero!!...i riferimenti alle cartelle corrente e superiore!...grazie mille...mi stavo incasinando per niente...grazie mi hai chiarito le idee prima che ci perdessi la testa...:D...thanks!

zoalord
28-08-2008, 08:33
Ma figurati, ci mancherebbe, ciao. :)