前几天整理自己的一份老代码,由于没有时间就把代码git到自己的一个老笔记本上修改。
本来跑得好好的代码在笔记本上提示内存不足,也是,笔记本太老了,内存本身就小。
看下了提示的错误,问题出在一处递归上。这是以前写的递归,无极限生成树形数组经常要用到。
这是以前的代码
/*无极限分类,返回树形数组结构*/ Static Public function unlimitedForLayer ($cate, $pid = 0, $name = 'son') { $arr = []; foreach ($cate as $v) { if ($v['pid'] == $pid) { $v[$name] = self::unlimitedForLayer($cate, $v['id'],$name); if(count($v[$name])==0){ $v[$name] =null; } $arr[] = $v; } } return $arr; }在内里面无极限生成树形类的。天下代码一大抄,当时也不记得是在哪里抄的,好像还是那个培训机构出的代码,后面的
if(count($v[$name])==0){ $v[$name] =null; }是我后来加的。 研究了一下,只要找到了就删除这个数组,加了个删除键。 最终代码如下
/*无极限分类,返回树形数组结构 *@param array $cate 数据库查出来的分类数组 *@param int $pid 父分类id *@param string $name 子数组键名 */ Static Public function unlimitedForLayer ($cate, $pid = 0, $name = 'son') { $arr = []; foreach ($cate as $k=>$v) { if ($v['pid'] == $pid) { unset($cate[$k]); $v[$name] = self::unlimitedForLayer($cate, $v['id'],$name); if(count($v[$name])==0){ $v[$name] =null; } $arr[] = $v; } } return $arr; }
跑了试验一下,再也不提示内存不足了,一句话解决php性功能不足问题。
所以有时候有人说xx语言不行,慢。不是语言不行,是用的人不行。