У меня есть база данных с названиями категорий. Столбцы: ID | CategoryName | ParentID
. Я использую row_array()
из модели CodeIgniter, и я хочу добавить ключ уровня к этому массиву строк. У меня есть вспомогательная функция, которая рекурсивно вычисляет все уровни категорий. Я написал, что вспомогательные функции в следующем фрагменте кода:Calculating Treversal Tree items level
function treegenerate($arrs, $parent_id=0, $level=0) {
foreach($arrs as $arr){
if($arr["CategoryParent"]!=0){
$level+=1;
}
$arr["Level"] = $level;
treegenerate($arrs,$arr["CategoryParent"],$level);
}
return $arrs;
}
Но это дает ошибку: «Разрешены памяти размером 33554432 байт исчерпаны (пытались выделить 523800 байт)». Как я могу исправить эту проблему?
Он не может работать, потому что я возвращал только уровень, как я могу знать CategoryName и идентификатор т.д. важно вне Еогеасп? Я попробовал, но это не сработало. –
Кажется, что вы поперечно целой массив $ arrs на каждом уровне своего дерева несколько раз. Каждый раз, когда вы создаете новый вызов функции treegenerate. Это очень быстро истощает вашу память. – ACNB
Что мне делать? Итак, как вычислить уровни? –