webForumDet fria alternativet

Sortering av mappar

6 svar · 387 visningar · startad av slow

slowMedlem sedan apr. 2004148 inlägg
#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

SuPeR_ToBBeMedlem sedan mars 2001180 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');
slowMedlem 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');
}
drewMedlem sedan mars 2007748 inlägg
#4

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

/D

slowMedlem sedan apr. 2004148 inlägg
#5

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

sabbacusMedlem sedan juli 2002629 inlägg
#6

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

SuPeR_ToBBeMedlem sedan mars 2001180 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.

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb