Autor | Zpráva | ||
---|---|---|---|
Kalixt Profil * |
#1 · Zasláno: 16. 8. 2015, 21:55:26
Zdravím mám taký script pre vypísanie z adresára a potrebujem to zoradiť podla abecedy bezohladu na velkost písmen
čiže taký príklad momentalne mi to zoradí takto: Audi, BMW, Citroen, aston martin, bentley ale ja to chcem mat pekne poporadí nechcem to mat oddelené velké od malých čiže takto: aston martin, Audi, bentley, BMW, Citroen, potrebujem to zakomponovať do tohto kodu, skušal som už všeličo ale nefungovalo mi to <?php $path = 'složka'; $dir_handle = @opendir($path) or die("Unable to open $path"); while ($file = readdir($dir_handle)) { if($file != '.' && $file != '..') { $file = substr($file, 0, strpos($file, " ")-4); echo"<span style='font-size: 12px; font-family: Tahoma; color: #00FF00;'>$file</span><br />"; } } closedir($dir_handle); ?> |
||
juriad Profil |
Jedoduše třeba takto:
$path = 'složka'; $files = glob($path . '/*'); # seřadí bez ohedu na velikost písmen; pokud bude shoda, budou velká první usort($files, function($a, $b) { $aa = strtolower($a); $bb = strtolower($b); return $aa == $bb ? ($a == $b ? 0 : ($a < $b ? -1 : 1)) : ($aa < $bb ? -1 : 1); }); echo "<ul class='fileList'>\n"; foreach ($files as $file) { $name = basename($file); echo "\t<li>$name</li>\n"; } echo "</ul>\n"; Proč chceš nějaké spany, když se jasně jedná o seznam souborů? Proč nastavuješ styl každému jednotlivému souboru, když to můžeš udělat jednoduše pomocí CSS? Mimochodem, příkaz glob je velice jednoduchá náhrada za opendir, readdir, closedir, pokud nepotřebuješ extrémní výkon. |
||
lionel messi Profil |
Kalixt:
Naskladaj si jednotlivé súbory do poľa a použi funkciu sort. Napr. takto: <?php $files = array(); //vytvoríme pole, kde budeme ukladať súbory $path = 'složka'; if (is_dir($path)) { $dir_handle = opendir($path); while ($file = readdir($dir_handle)) { if($file != '.' && $file != '..') { $file = substr($file, 0, strpos($file, " ")-4); $files[] = $file; //pridáme názov súboru do poľa } } closedir($dir_handle); sort($files); //zoradíme pripravené pole podľa abecedy, pozor na to, že funkcia sort nevracia nové pole, ale modifikuje pôvodné foreach ($files as $file) { echo"<span style='font-size: 12px; font-family: Tahoma; color: #00FF00;'>$file</span><br />"; //vypisujeme } } else { echo "Unable to open $path"; } ?> Mierne som zmenil taktiež úvod kódu, nepáčilo sa mi použitie zavináča na potlačenie chyby ani škaredé or die()
Kompletne prekopaný kód [#2] je podstatne lepší. |
||
Keeehi Profil |
#4 · Zasláno: 17. 8. 2015, 00:26:11
juriad
Na co vlastní funkci když existuje stejná* $path = 'složka'; $files = glob($path . '/*'); usort($files, "strcasecmp"); echo "<ul class='fileList'>\n"; foreach ($files as $file) { $name = basename($file); echo "\t<li>$name</li>\n"; } echo "</ul>\n"; * tedy až na tu prioritu velkých písmen shodných slov |
||
Časová prodleva: 10 let
|
0