Mam pewien problem z drzewkiem rekurencyjnym w PHP.
Funkcja która wykonuje się w funkcji musi mi dać odpowiedź w formie return'a czego nie potrafię zrobić próbując już na wiele sposobów od podawania return przy funkcji w funkcji po inne dziwne wymysły.
W czym dokładnie problem?
Potrzebuję porównać file_exists z wynikiem działania funkcji, gdyby to była zwykła funkcja to po prostu dałbym return i otrzymałbym to czego potrzebuję, problem jest jednak gdy wykonuje się ona w sobie więcej niż jeden raz bo wtedy tego returna z głównej funkcji nie otrzymuję - problemu nie ma gdy potrzebuję to wyechować.
Co prawda mógłbym to zrobić w tej funkcji sprawdzając za każdym razem ten file_exists i byłoby po problemie, lecz zaciekawiło mnie czy da się w ogóle w jakiś sposób przekazać pierwszej wykonanej funkcji wynik ostatniej wykonanej funkcji.
Przepraszam, że tak niezwięźle wytłumaczyłem, lecz lepiej nie potrafię.
Tutaj funkcja o której mowa:
function d($id, $result) { include("inc/config.php"); $main_section_query = mysqli_query($connection, "SELECT id, sub, nazwa, kategoria FROM dzialy WHERE id='$id'"); if(mysqli_num_rows($main_section_query) > 0) { while($main_section = mysqli_fetch_array($main_section_query)) { $sub_section_query = mysqli_query($connection, "SELECT id FROM dzialy WHERE id='$main_section[sub]'"); if(mysqli_num_rows($sub_section_query) > 0) { while($sub_section = mysqli_fetch_array($sub_section_query)) { d($sub_section['id'], $result); } } else { switch($result) { case 4: $section_category = mysqli_fetch_array(mysqli_query($connection, "SELECT nazwa FROM kategorie WHERE id='$main_section[kategoria]'")); echo $section_category['nazwa']; break; } } if($result == 0) { } } } }
Gdyby się dało jakoś otrzymać ten return w głównej funkcji to życie byłoby dużo prostsze i o wiele lepszy kod - dlatego postanowiłem zapytać na tym forum czy jest to jakoś wykonalne.
Natomiast jeżeli chodzi o to co chcę sprawdzić to chcę to zrobić w taki sposób:
... }
Lecz z echem niestety jest to awykonalne.
Natomiast bez zewnętrznego użycia return'a z tej funkcji, w jej środku wymyśliłem to w taki sposób (result nr. 5):
function d($id, $result) { include("inc/config.php"); $main_section_query = mysqli_query($connection, "SELECT id, sub, nazwa, kategoria FROM dzialy WHERE id='$id'"); if(mysqli_num_rows($main_section_query) > 0) { while($main_section = mysqli_fetch_array($main_section_query)) { if($result == 5) { echo'<style>body { background-image: url(img/section/section_bg/'.$main_section['id'].'.jpg); }</style>'; break; } } $sub_section_query = mysqli_query($connection, "SELECT id FROM dzialy WHERE id='$main_section[sub]'"); if(mysqli_num_rows($sub_section_query) > 0) { while($sub_section = mysqli_fetch_array($sub_section_query)) { d($sub_section['id'], $result); } } else { switch($result) { case 4: $section_category = mysqli_fetch_array(mysqli_query($connection, "SELECT nazwa FROM kategorie WHERE id='$main_section[kategoria]'")); echo $section_category['nazwa']; break; } if($result == 5) { echo'<style>body { background-image: url(img/section/category_bg/'.$main_section['kategoria'].'.jpg); }</style>'; } } } if($result == 0) { } } } }
Dziękuję z góry i Pozdrawiam!