webForumDet fria alternativet

Sortera + is_dir + is_file

PHP

4 svar · 399 visningar · startad av NeoBlizz

Medlem sedan jan. 200351 inlägg
Frågan#1

Har en kodsnutt som kollar en mapp och listar filerna i den..

Nu vill jag lista dem i bokstavsordning när de skrivs ut.

		if(is_dir("/usr/home/apache/htdocs/archive/".$thedir)) {
			$session_dir = dir("/usr/home/apache/htdocs/archive/".$thedir);
			$all = 0;
			while($entry = $session_dir->read()) {
				//echo "Dirlist";
				if($entry != "." && $entry != "..") {
					//make a proper filename to use
					$filename = "/usr/home/apache/htdocs/archive/".$thedir."/".$entry;   
					$file_time = date("Y-m-d H:s",filemtime($filename));
					//do filesize
					$file_size = filesize($filename);
					if($file_size > 1024 && $file_size < 1048576) {
						$file_size = $file_size / 1024;
						$file_size = round($file_size,2) ."Kb";	
					}
					else if($file_size > 1048567) {
						$file_size = $file_size / 1048576;
						$file_size = round($file_size,2) ."Mb";	
					}
					if(is_file($filename)) {
						//print href to file.
					echo "<a href='/archive/".$thedir."/".$entry."'class='grey'>".$entry."</a> <font color='GOLD'>Size: ".$file_size."</font><br>";
					}
//		                	$all++;
					//$this->wholePage[] = "<tr><td colspan=3>&nbsp;</td></tr>";
				}
			}
			$session_dir->close();
		}

Hur, vad ska jag lägga til för att de ska skrivas ut i bokstavsordning?

Medlem sedan aug. 20002 975 inlägg
#2

Samla dina värden i en array, istället för att skriva ut.
Sortera arrayen.
Loopa ut arrayen.

Medlem sedan jan. 200351 inlägg
#3

Ungefär det svar jag förväntade mig. hehe.

Synd bara att jag inte har en aning om vad all kod gör (inte jag själv som skrivit den)

Får titta på det.. array->sortera->loopa ut...

Medlem sedan aug. 20002 975 inlägg
#4

Först någonstans innan filhämtning initierar du en tom array, t.ex.

$files = array();

Sedan i din listning ändrar du från att skriva ut

echo "<a href='/archive/".$thedir."/ ...

till att samla i array

$files[] = "<a href='/archive/".$thedir."/ ...

Sedan efter loopen skriver du ut:

sort($files); // Sorterar

// Skriver ut
foreach($files as $file) {
   echo $file;
}
Medlem sedan jan. 200351 inlägg
#5

Danke...

246 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)