0

我有一个包含类别名称的数据库。列是ID | CategoryName | ParentID。我正在使用row_array()CodeIgniter 模型,并且我想向该行数组添加一个级别键。我有一个递归计算所有类别级别的辅助函数。我在以下代码段中编写了该辅助函数:

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 字节)”。我该如何解决这个问题?

4

1 回答 1

0

在不知道您的代码的情况下只是一些想法:

  • 是否可以从主干开始添加级别键?可能会为您节省一些重复。
  • 你能把foreach移到treegenerate之外吗?

喜欢:

function treegenerate($arr,$level=0) {
        if($arr["CategoryParent"]!=0){
           $level +=1;
        }
        else return $level; 

    }
    treegenerate($arr["CategoryParent"],$level);;
}

foreach ($arrs as $arr) $arr['level'] =  treegenerate($arr);
于 2013-05-19T10:58:50.283 回答