где вернуть значение из рекурсивной функции в php

Я использую рекурсивную функцию для получения значений из базы данных, но в моем коде я получаю только первую запись в качестве возврата. Где я должен возвращать функцию возврата после завершения всего?

function sidebar_sub_sub($id) { $sql="select subcatagory_id,subcatagory_name,haschild,parent from subcatagory where parent=".$id.""; $query=mysql_query($sql); $resultset=array(); if(mysql_num_rows($query)) { while($result=mysql_fetch_assoc($query)) { array_push($resultset,$result); if($result['haschild']) { $sb=sidebar_sub_sub($result['subcatagory_id']); } } } return $resultset; } 

Solutions Collecting From Web of "где вернуть значение из рекурсивной функции в php"

вы сохраняете результат sidebar_sub_sub() в $ sb. Но тогда вы ничего не делаете с этой переменной.

Вы можете сделать array_push($resultset, sidebar_sub_sub()) . Таким образом вы возвращаете весь стек рекурсии.

Попробуйте использовать приведенный ниже сценарий, который я использовал для таблицы категорий, в которой есть только три поля: id, name и parent_id. Это может сработать для вас.

 $resultset=array(); function sidebar_sub_sub($id) { global $resultset; $sql="select id,name,parent_id from categories where parent_id=".$id.""; $query=mysql_query($sql); if(mysql_num_rows($query)) { while($result=mysql_fetch_assoc($query)) { array_push($resultset,$result); if($result['parent_id']>0){ sidebar_sub_sub($result['id']); } } } return $resultset; } $result = sidebar_sub_sub(1); в $resultset=array(); function sidebar_sub_sub($id) { global $resultset; $sql="select id,name,parent_id from categories where parent_id=".$id.""; $query=mysql_query($sql); if(mysql_num_rows($query)) { while($result=mysql_fetch_assoc($query)) { array_push($resultset,$result); if($result['parent_id']>0){ sidebar_sub_sub($result['id']); } } } return $resultset; } $result = sidebar_sub_sub(1);