Hallo allemaal..

Even een kleine vraag over het weergeven over een bepaalde volgorde.

Hier even het script ter verduidelijking :

<?
$dir = "../l-ned"; // de directory die hij uit moet lezen
$exten = 'php'; // de extensie die hij weer moet geven
if ($handle = opendir($dir))
{
while (false !== ($file = readdir($handle))) {
$bestand = $dir ."/". $file ;
$ext = pathinfo($bestand);
if($ext['extension'] == $exten)
{
echo "<a href='" . $bestand . "'>" . basename($file, ".php") . "</a><BR>";
}
}
closedir($handle);
}
?>

Dit scripie leest dus een bepaalde map uit.. en geeft de bestanden gelijk weer als menu zeg maar..

Ditzelfde script gebruik ik ook weleens om foto's uit een map te lezen en weer te geven.

Nu vraag ik mij echter af WAT bepaald de volgorde van weergave ?
Ik heb al eens een bepaalde namen aan bestanden gegeven om de volgorde te beinvloeden, alleen erg veel hielp dat niet.

Ik heb wel begrepen dat het via een ARRAY wel kan.. maar ik ben gewoon benieuwd welke factor de volgorde bepaald.

Alvast bedankt.

Groeten,
Floris.
Voor zover ik dat bij mijn webadmin kan zien is het gewoon de volgorde waarin bestanden op de server zijn gezet of aangemaakt.
Ook dat klopt niet helemaal ;-) Het is de volgorde waarin de bestanden in de directory-index (of inode-tabel of hoe dat ook mag heten bij de verschillende besturingssystemen) staan. Dat kan de volgorde zijn waarin ze zijn aangemaakt, maar dat hoeft niet...

Het is het gemakkelijkst om er vanuit te gaan dat de volgorde willekeurig is.
Is het mogelijk zonder array toch de volgorde te beinvloeden hiervan ?

Greetzz,
Floris.
Ja en nee.

Ja, het kan.
Nee, het is niet handiger dan gewoon een array gebruiken ;-)

Je zou bijvoorbeeld iets kunnen doen als

$output = shell_exec("ls $dir"); (voor Unix/Linux)

of $output = shell_exec("dir /b $dir"); (voor Windows)

Maar dan heb je je output in een string staan. Die moet je vervolgens exploden om hem te kunnen verwerken en dan heb je alsnog een array ;-)

Mocht je dusdanig gewetensbezwaard zijn dat je om principiƫle redenen geen arrays wilt gebruiken dan zou je eventueel in je $output met strpos() kunnen zoeken waar de newlines staan en vervolgens met substr() de directory-namen eruit vissen, maar dat is hoogstens leuk als programmeeroefening.

Het meest eenvoudige lijkt me toch gewoon iets als (even snel uit de losse pols):

<?
$files = array();
while ($file=readdir($dir))
{
$files[] = $file;
}
sort($files);
foreach ($files as $file)
{
# Doe iets met $file
}
?>
Hoi,

Nou, het is niet zo dat ik iets tegen arrays heb.. alleen ben ik PHP stapje voor stapje aan het leren.. en ben dus nog niet zo thuis in arrays..
Maargoed.. zo te merken moet ik me daar toch even snel in gaan verdiepen..
In ieder geval bedankt voor de uitleg.. ik ben weer ff wat wijzer geworden.

Greetzz,
Floris.

Reageren