项目需要一个action里多次调用getChild,重要的是getChild里还有递归。
错误原因我知道是由于static的缘故,没有释放静态变量的方法。
也试过把static弄成static $children[$id][]=array 二维数组,也不行。
写文件缓存我知道可以,但不想这样操作,有点麻烦
不知道还有什么办法可以解决的呢
非常感谢!
1
dongbeta Feb 22, 2014 flag 这个参数是为了做什么呢?
|
3
dongbeta Feb 22, 2014
1. flag 这个参数没有必要,反而混淆你的逻辑。既然是寻找子节点,就没有必要把根节点 ID 加入。
2. 名字错了 应该叫 getChildren 3. 解决递归问题,和解数学上归纳法的思路类似。你先写出一个只给一级子节点的函数,然后再处理子节点的子节点,然后将这两者接上。 4. 如果是为了将值记录下来,可以用传引用参数的方式。static 会在两次调用的时候记忆上一次的值,所以会影响你多次调用。 |
4
dongbeta Feb 22, 2014
还有一点,当你发现想不明白的时候,可以尝试去掉一些无关紧要的东西。比如 $idField , $parentField 然后再写。
|
5
dongbeta Feb 22, 2014
|