Ako su ti u nizu samo nazivi fajlova, u funkciji za sortiranje se mora imati podatak o putanji. Recimo da je to globalna promenljiva $dirname:
Code:
function filecmp ($a, $b)
{
global $dirname;
if (filemtime ("$dirname$a") < filemtime ("$dirname$b")) return -1;
return 1;
}
Naravno, poziv je usort ($dirarray, "filecmp");
Nekako, za bilo kakav listing direktorijuma je navika da se prikažu prvo poddirektorijumi pa tek ondak fajlovi.
Code:
function filecmp ($a, $b)
{
global $dirname;
if (filetype ("$dirname$a") < filetype ("$dirname$b")) return -1;
if (filetype ("$dirname$a") > filetype ("$dirname$b")) return 1;
if (filemtime ("$dirname$a") < filemtime ("$dirname$b")) return -1;
return 1;
}
Evo jedan drugi primer, u nizu fajlova iz direktorijuma čuvaju se ime, ekstenzija, veličina fileta i datum, pa sad to sve da može da se sortira po bilo kojoj koloni, opadajuće ili rastuće... (odvojeni su nizovi za poddirektorijume i fajlove)
Code:
function filecmp ($a, $b)
{
if (!isset ($_SESSION ['sortorder']))
$_SESSION ['sortorder'] = array ('name', 'ext', 'size', 'date');
$sortorderindex = 0;
while ($sortorderindex < count ($_SESSION ['sortorder']))
{
$order = $_SESSION ['sortorder'] [$sortorderindex++];
if (substr ($order, 0, 1) == '!')
{
$order = substr ($order, 1);
$pre = 1;
$after = -1;
}
else
{
$pre = -1;
$after = 1;
}
if ($a [$order] == $b [$order]) continue;
else return $a [$order] < $b [$order] ? $pre : $after;
}
return 0;
}