Autor Zpráva
Kalixt
Profil *
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0