03. december 2008 - 13:06
Der er
18 kommentarer og 1 løsning
Sortering af output
Nedenstående script giver et output på skærmen soretert efter hvornår filerne er uploadet. Hvorledes får jeg i stedet gjort sorteringen alfabetisk ??
Annonceindlæg tema
03. december 2008 - 13:39
#1
Øh glemte vist lige at uploade scriptet - det kommer her: <?php $dir = "./"; if ($handle = opendir($dir)) { $filearray = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filearray[$file] = filectime($dir.$file); } } closedir($handle); } arsort($filearray); echo "<b>Find billeddatabase her:</b><br><br>"; foreach ($filearray AS $filename => $datetime) { if($filename!="index.php") { echo "<a href=\"".$dir.$filename."\">".$filename."</a><br>\n"; } } ?>
03. december 2008 - 14:08
#2
hmm, arsort skulle jo netop sortere på key og ikke navnet? Du kan evt. bytte om på navn og tid i dit array $filearray[filectime($dir.$file)] = $file; og så bruge sort($filearray)
03. december 2008 - 15:25
#3
brug evt. natsort() hvis du vil have 1,2,3,11,12 istedet for 1,11,12,2,3
03. december 2008 - 22:30
#4
>> showsource Så får jeg blot en masse tal frem på skærmen, og ikke navnet på mapperne/filerne ??? scriptet ser ud således nu: <?php $dir = "./"; if ($handle = opendir($dir)) { $filearray = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filearray[filectime($dir.$file)] = $file; } } closedir($handle); } sort($filearray); echo "<b>Find billeddatabase her:</b><br><br>"; foreach ($filearray AS $filename => $datetime) { if($filename!="index.php") { echo "<a href=\"".$dir.$filename."\">".$filename."</a><br>\n"; } } ?>
03. december 2008 - 23:16
#5
Du kune ogsp bruge scandir istedet... Den sorterer automatisk alfabetisk
foreach(scandir($dir) as $file) {
if ($file != "." && $file != "..") {
$filearray[filectime($dir.$file)] = $file;
}
}
Noget i den retning... Så får du et sorteret array.
http://dk.php.net/manual/en/function.scandir.php /y
04. december 2008 - 11:15
#6
Får stadig blot en masse tal som output. Jeg skal gerne have navnet på filer og mapper stående på skærmen i stedet.
04. december 2008 - 11:21
#7
Det er slet ikke holdbart at bruge konstruktionen $filearray[filectime($dir.$file)] = $file; for to forskellige filer kan sagtens have samme tidsstempel
04. december 2008 - 11:34
#8
Hvordan gør jeg så ? Er ikke særlig stiv i dette !
04. december 2008 - 11:35
#9
Har prøvet dette, som desværre heller ikke sorterer korrekt: <?php if ($handle = opendir('./')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file !="index.php") { echo "<a href=\"".$file."\" target=\"_blank\">".$file."</a><br>\n"; } } closedir($handle); } ?>
04. december 2008 - 14:12
#10
Jamen, du skal ikke gøre noget. Koden fra 03/12-2008 13:39:31 er korrekt - den sorterer aftagende efter creation-time.
04. december 2008 - 14:12
#11
Bemærk den første sætning fra showsource, som er helt korrekt. Du kan så glemme resten ;)
04. december 2008 - 14:25
#12
Eller også er det mig, der ikke kan læse. Jeg mente at tro at der blev skrevet at du skulle bruge
http://php.net/krsort
04. december 2008 - 14:40
#13
Hej Erik Som jeg skrev ønsker jeg ikke sorteret efter creation-time, men en alfabetisk sortering efter filnavn.
04. december 2008 - 15:24
#14
05. december 2008 - 15:46
#15
Lukker Kan ikke få skidtet til at makke ret
05. december 2008 - 17:51
#16
Jeg vil tro, den har kan. Der kan være noget sjov, hvis man har filnavne eller kataloger udelukkende med cifre. <?php $dir = "./"; if ($handle = opendir($dir)) { $filearray = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filearray[$file] = filectime($dir.$file); } } closedir($handle); } krsort($filearray); echo "<b>Find billeddatabase her:</b><br><br>"; foreach ($filearray AS $filename => $datetime) { if($filename!="index.php") { echo "<a href=\"".$dir.$filename."\">".$filename."</a><br>\n"; } } ?>
05. december 2008 - 18:21
#17
Tror også denne vil virke, <?php $dir = "./"; if ($handle = opendir($dir)) { $filearray = array(); while (false !== ($file = readdir($handle))) { if ($file == "." || $file == ".." || $file == "index.php") { continue; } $filearray[] = array($file, filectime($dir.$file)); } closedir($handle); } sort($filearray); echo "<b>Find billeddatabase her:</b><br><br>"; foreach ($filearray as $key => $fileinfo) { echo "<a href=\"".$dir.$fileinfo[0]."\">".$fileinfo[0]."</a><br>\n"; } ?>
06. december 2008 - 09:42
#18
>> erikjacobsen Tak for hjælpen - det virkede - dog med den undtagelse at jeg var nødt til at anvende ksort(), da krsort() sorterer i omvendt alfabetisk rækkefølge. Vi du som sædvanlig ikke ha' points??
06. december 2008 - 12:10
#19
nej tak
Vi tilbyder markedets bedste kurser inden for webudvikling