ho un dubbio esistenziale...
ho scritto questo codice:
Codice PHP:
$scambi=1;
function xt($fn){
$fn = strtolower($fn) ;
$exts = split("[/\\.]", $fn) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
$dir="./res/";
$h=opendir($dir);
$cnt_d=0;
while($file=readdir($h)){
if((strtolower(xt($file))==strtolower($file))&&($file!=".")&&($file!="..")){
$dirs[$cnt_d]=$file; //Aggiungi cartella all'array in posizione $cnt;
$cnt_d++; //aumenta il contatore cartelle (prima cartella ha indice 0);
}
}
//e già qui l'array dovrebbe essere ordinato per benino
//ma siccome di fatto non me lo ordina sono passato ad ordinarlo a mano
$pass_asc=1;
$pass_desc=1;
while($scambi==1){
$scambi=0;
for($i=$pass_desc;$i<$cnt_d-$pass_asc;$i++){
if(intval(substr($dirs[$i-1],0,2))>intval(substr($dirs[$i],0,2))){
//quest'ultima riga va spiegata: le cartelle lette e poste nell'array
//hanno nomi NNNAbcAbc dove NNN è un numero scritto in 3 cifre (001, 002, 003)
$temp=$dirs[$i-1];
$dirs[$i-1]=$dirs[$i];
$dirs[$i]=$temp;
$scambi=1;
}
$pass_asc++;
if($scambi!=0){
for($i=$cnt_d-$pass_asc;$i>$pass_desc;$i--){
$temp=$dirs[$i-1];
$dirs[$i-1]=$dirs[$i];
$dirs[$i]=$temp;
$scambi=1;
}
}
}
}
qualcuno ha qualche idea per spiegarmi per quale sadica ragione mi ritrovo ancora con un array non ordinato e quello che è ordinato lo è al contrario?
stampando l'array con:
Codice PHP:
for($i=0; $i<$cnt_d; $i++)
echo $dirs[$i]."
";
mi da una lista di cartelle tipo
005cartella5
003cartella3
002cartella2
001cartella1
004cartella4
sbaglio o non ha senso?