Sortering av mappar

PHP

6 svar · 400 visningar · startad av slow

Medlem sedan apr. 2004148 inlägg
Trådstart#1

Hej!

Går det att sortera mappar via det datum mappen skapades med PHP?

Kör en enkel scandir som sedan listar mappar i en speciell mapp. Dessa mappar skulle jag sedan vilja att senast skapad mapp hamnar överst. Går det? Har inte lyckats hitta någon lösning för detta...

MVH
Patrik

Medlem sedan mars 2001185 inlägg
#2

Enklaste sättet bör vara att använda filemtime för att kolla senaste ändringen tillsammans med usort för att sortera din array efter denna.

function my_sort($file1, $file2) 
{
    // Byt plats på 1 och -1 om du vill ändra sökordning,
    // nu kommer senast ändrade först
    return (filemtime($file1) < filemtime($file2)) ? 1 : -1; 
}

// ... din scandir-funktion som skapar en array (kallar den $array här)

// Sortera
usort($array, 'my_sort');
Medlem sedan apr. 2004148 inlägg
#3

Tack för ditt svar!

Vad ska jag skicka för info i $file1 och $file2?

Så här har jag gjort det hittils. Fungerar än så länge inte...

echo "<form name=\"images\">\n";
echo "<select name=\"images\" onChange=MM_jumpMenu('parent',this,0)>\n";
echo "<option value=\"".$siteurl."/?id=".$_GET['id']."\">Hämta album...</option>\n";
function my_sort($file1, $file2)
{
    // Byt plats på 1 och -1 om du vill ändra sökordning,
    // nu kommer senast ändrade först
    return (filemtime($file1) < filemtime($file2)) ? 1 : -1;
} 
// >> PHP VERSION CHECK AND FUNCTIONS
$version = phpversion();
$pversion = $version{0};
if($pversion == "5") {
	$mappar = scandir($mapp);
} else {
	$smapp  = opendir($mapp);
	while (false !== ($filnamn = readdir($smapp))) {
		$mappar[] = $filnamn;
	}
	//sort($mappar);
	usort($mappar, 'my_sort');
}
Medlem sedan mars 2007845 inlägg
#4

Filnamnen, med sökväg om dom inte är i current dir.

/D

Medlem sedan apr. 2004148 inlägg
#5

Men det är mappar, inte filer jag vill sortera...enbart mappar alltså...

Medlem sedan juli 2002630 inlägg
#6

filtrera ut katalogerna med is_dir()
http://se.php.net/is_dir

Medlem sedan mars 2001185 inlägg
#7

Jag borde varit tydligare med det: my_sort används bara av usort.

För att det ska funka även när scandir körs bör du lägga usort efter sista måsvingen (}) i din kod.

595 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
371 ms — deklarationer (db)
0 ms — hämta statistik (cache)
218 ms — hämta tråd, inlägg och bilagor (db)
369 ms — ändringar (db)