Koodi rekursiivinen funktio on seuraava: toiminto searchTree () {maailmanlaajuinen $ aboveDir, $ dirArr; $ CDirArr = scandir ("."); //Saada hakemiston luettelo nykyisen hakemiston ($ i = 0; $ i jos ((is_file ($ CDirArr [$ i])) || ($ CDirArr [$ i] == ".") || ($ CDirArr [$ i] == "..")) {array_splice ($ CDirArr, $ i, 1), - $ i;}} //siirtää osa hakemistopolut seuraavaan taulukkoalkion. for ($ i = 0 ; $ i $ dirArr [] = getcwd (). "\\\\". $ CDirArr [$ i]; //käyttää vinoviiva ei-Windows-järjestelmissä.
} //varten jälkeläinen hakemistot ($ j = 0; $ j chdir ($ CDirArr [$ j]), searchTree ();} //sillä kantaisä hakemistoja jos ((chdir ("..")) && (getcwd ()! = $ aboveDir)) {}} käsikirjoitus asuu Dir0 hakemistoon. globaalien muuttujien eivät ole osa ensimmäisen koodisegmentti. ensimmäinen koodi segmentti alkaa $ CdirArr muuttuja. Älä sekoita välillä $ CdirArr ja $ iCurrDir muuttujia. PHP hakemistoon listalle, sinun pitäisi nähdä piste (.) Ja kaksinkertainen piste (..) jäseninä listalle. Yksittäinen piste on on viittaus nykyiseen hakemistoon. Kaksinkertainen piste on viittaava merkintä emohakemisto.
Olen käyttänyt paljon PHP ennalta toimintoja koodi. Selitän merkitys toimintoja. Yksinkertaisesti syntaksi scandir () funktio on, scandir (hakemisto) Se palauttaa matriisin kaikkien tiedostojen nimet ja hakemistot hakemistosta, joka on argumentti. Tämä luettelo sisältää piste ja kaksinkertainen piste merkintöjen. Yksinkertaisesti, syntaksi array_splice () funktio on, array_splice (arrayName, offset, pituus) Tämä toiminto poistaa osan array. Ensimmäinen argumentti on nimi jono. Toinen argumentti on matriisi indeksi jossa poisto alkaa. pituus on määrä joukko tekijöitä, jotka poistetaan.
Count () Funktio ottaa argumenttina nimi array. Se palauttaa alkioiden lukumäärä pakassa. Nyt tämä on erittäin tärkeä: Se on kolmas segmentti searchTree () funktio, jossa rekursiota toteutetaan. Se on silloin searchTree () funktion uudelleen kutsutaan. K