Skocz do zawartości

Funkcja w funkcjii


Shylios

Rekomendowane odpowiedzi

Mam proste pytanko,

Jak wykonać funkcje w funkcji? A dokładniej tą samą, coś w stylu:

<?php
  function lol()
    {
    $file=fopen("1.txt","w");
    fwrite($file,"1\r\n");
    fclose($file);
    lol();
    };
    lol();
?>

Że funkcja sama siebie wykonuje, jest możliwe?

Nie chodzi mi o powtarzanie jakiejś czynności X razy!

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Chodzi Ci o funkcje rekursywna. Oczywiscie, ze jest mozliwe, tylko musisz ja tak skonstruowac, zeby sie nie zapetlila. Ogolnie tego typu funkcje stosuje sie glownie w scisle okreslonych problemach, a jak takich nie zauwazasz, to nie musisz korzystac z rekursji, bo program ma byc maksymalnie prosty i zrozumialy przez Ciebie. Nic na sile.

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli jak to skonstruować? - Zapętlać się nie będzie, bo robie skrypt który sam chodzi po folderach i robi listę plików

 

Coś w stylu:

function funckaj_skanowania_folderu{
if (is_dir($dir."\\".$file))
            {
            funckaj_skanowania_folderu($dir."\\".$file);};
            };

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, jak już to

function funkcja_skanowania_folderu($to,$tamto){
//treść funkcji
}

 

Po drugie zupełnie nie mam pojęcia, co chcesz uzyskać. Z tego co tu napisałeś nic by nie wyszło, bo jedyną czynnością wykonywaną przez funkcję jest ponowne wywoływanie samej siebie. W przypadku, w którym chcesz na przykład pobrać listę plików w folderze absolutnie nie warto uciekać się do rekurencji, wystarczy użyć scandir();. Z tym, że scandir działa tylko pod PHP5 bodajże...

 

Ale zawsze można zakombinować tak, jak mówi manual PHP:

 

<?php
$dir = "/tmp";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
   $files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);

?>

Odnośnik do komentarza
Udostępnij na innych stronach

O rany. Skryptu nie sprawdzaj, bo zwróci w zasadzie to, co scandir. Skoro chcesz mieć całe drzewo katalogów i listy plików, to po prostu zrób pętlę. Sprawdzaj po kolei każdy element tablicy zwróconej przez scandir, jeśli jest folderem, jeszcze raz scandir and so on. Btw jeśli chcesz, żeby skrypt naprawdę SAM sporządzał to drzewo, to musisz pobawić się cronem.

 

Btw. ten skrypt nie jest mój, to przykład z manuala PHP, i stąd zwraca dwie tablice (jedna niepotrzebna, różnią się kolejnością elementów).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...