webForumDet fria alternativet
Logga in / Bli medlem

Sortering av mappar

PHP

6 svar · 389 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.

265 ms totalt · 4 externa anrop · v20260731065814-full.50d4b5bd
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)