Kirjautuminen

Haku

Tehtävät

Koodit: PHP: Rekursiivinen hakemistolistaus

Kirjoittaja: exAtuu

Kirjoitettu: 03.01.2006 – 03.01.2006

Tagit: ohjelmointitavat, koodi näytille, vinkki

Tätä on moni kysellyt, joten teenpä tästä koodivinkin. Asia on kovin simppeli, mutta ei tunnu avautuvan automaagisesti kaikille.

Koodilla siis voidaan listata rekursiivisesti hakemistoja. Jutun jujuna on itseään kutsuva funktio, siis rekursio.

<?php
function rekursiolista($hakemisto) {
	$lista = glob($hakemisto . '*');

	//jos hakemistossa ei ole kohteita, lopetetaan
	if (count($lista) == 0) return 1;

	echo "<ul>\n";

	foreach ($lista as $file) {

		//jos kohde on hakemisto, aloitamme erityistoimenpiteet
		if (is_dir($file)) {
			echo "<li>{$file}\n";

			rekursiolista($file . '/'); //teh rekursio

			echo "</li>\n";
		}

		else echo "<li>{$file}</li>\n";
	}

	echo "</ul>\n";
}
?>

Käyttö

Käyttö tapahtuu seuraavasti:

rekursiolista('hakemisto/');

Huomaa siis viimeisen kauttaviivan tärkeys.

Kommentit

Draiz [05.01.2006 22:33:18]

#

Mikä/mitä on rekursio? :P

Antti Laaksonen [06.01.2006 00:47:10]

#

Tässä vähän tietoa:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=rekursio

tejeez [08.01.2006 19:40:43]

#

Mikä on hakemisto? :P

Leeni [14.01.2006 16:35:39]

#

lainaus:

Mikä on hakemisto? :P

LOL

makas [15.01.2006 18:56:07]

#

Löytyykö demoa?

exAtuu [21.01.2006 21:05:00]

#

Demoa ei löydy eikä sitä tarvinne. Tässä ei oikein ole mitään demottavaa.

hmmp [04.02.2006 11:37:27]

#

Itsehän käytän tällaista, joka on "hieman" monikäyttöisempi:

function dirscan($dir){
    if(is_dir("../".$dir)) $basedir = dir("../".$dir);
	else die("Directory " . $dir . " does not exist.");
    $dirs = array();
    while(false !== ($file = $basedir -> read())){
        if($file != ".." && $file != "."){
            if(is_dir("../".$dir.$file)){
	            $filepath = $dir.$file."/";
                $dirs[] = $filepath;
                $dirs = array_merge($dirs, dirscan($filepath));
    }}}
    return $dirs;
}

exAtuu [23.02.2006 08:19:15]

#

No nämä tosiaan ovat koodivinkkejä, joita harvoin tulee edes käyttää suoraan. Tämän koodivinkin aiheena oli rekursio.

tsuriga [31.10.2007 01:08:13]

#

Eipä tommosia kertakäyttöfunkkareita kannata tehä edes esimerkin vuoks, vaikeehan tuolta kaiken HöTöMöLön seasta on löytää oleellinen. Funkkari ja tulostuksen muotoilu erikseen. Ite tein tämmosen rekursiivisen tiedostolistauksen (pari lisäystä ja saa myös tyhjät hakemistot listattua) projektiini, voin käyttää samaa metodia uudelleen ja muotoilla palautusarvoa niinko huvittaa: https://www.ohjelmointiputka.net/koodivinkit/24173-php-rekursiivinen-hakemistolistaus-globeilla

exAtuu [06.08.2008 04:04:37]

#

Et varmaan huomannut, mutta ylin koodilistaus kyllä näyttää funktion sellaisenaan. Poistin nyt kuitenkin tuon hötömölöversion häiritsemästä.

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta