PDA

View Full Version : [php]Problema riordinamento array


$te
06-01-2009, 13:06
Salve, ho questo problema:
ho una pag php in cui stampo i nomi dei file che ci sono in una determinata cartella. QUesti file sono numerati del tipo file1, file2,ecc.

$nomefile = array();
$Kby = array();
$i = 0;
while($file = readdir($open))
{
if(!is_dir($file) && !is_link($file))
{
$nomefile[$i] = $file;
$Kb=filesize($upload_directory.$file);
$Kb=$Kb/1024;
$Kby[$i] = numdec($Kb, 0);
$directory[$i] = $upload_directory.$file;
$i++;
}

}
sort($nomefile);

$z = 0;
while($i != $z)
{
$dir = $directory[$z];
$Kb = $Kby[$z];
$nome = $nomefile[$z];
$uploaded_files .= "<a class=\"news_titolo\" href=\"$dir\"
target=\"_blank\" title=\"$file (".$Kb." Kb)\">".$nome."</a>
(".$Kb." Kb)<br><br>";
$z++;
}
Il problema é che dopo che ordino l'array $nomefile, i link non sono piu giusti (perché l'array $directory é cosi sfasato, come anche $kb)

come posso fare?

grazie

kk3z
06-01-2009, 14:14
[ php ][ /php ] no?

Tu fai il sort sull'array $nomefile, ma non sull'array $kb nè su $directory, quindi poi non corrispondono (e non serve a niente ordinare anche quelli, perchè verranno ordinati diversamente dall'array $nomefile). Devi mettere tutti i dati in un solo array:

$files = array();
while($file = readdir($open))
{
if(!is_dir($file) && !is_link($file))
{
$dimensione =filesize($upload_directory.$file);
$dimensione = $dimensione /1024;
$dimensione = numdec($dimensione , 0);

$directory = $upload_directory.$file;

$files[] = array(
'nome' => $file,
'dimensione' => $dimensione,
'directory' => $directory,
);
}
}

function sort_function($file1, $file2)
{
return strcmp($file1['nome'], $file2['nome']);
}
usort($files, "sort_function");

foreach($files as $file)
{
$dir = $file['directory'];
$Kb = $file['dimensione'];
$nome = $file['nome'];
$uploaded_files .= "<a class='news_titolo' href='$dir'
target='_blank' title='$file (".$Kb." Kb)'>".$nome."</a>
(".$Kb." Kb)<br><br>";
}