Я использую рекурсивную функцию для получения значений из базы данных, но в моем коде я получаю только первую запись в качестве возврата. Где я должен возвращать функцию возврата после завершения всего?
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; }
вы сохраняете результат 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);