/**
* 执行树形数据生成 非递归实现
* @author RuizhaoLee <liruizhao970302@outlook.com>
* @param array $array 要进行转化的数组
* @param string $returnType 转化的结果返回模式,支持array|json
* @param string $children 子节点下标,默认'children'
* @param string $defaultId id节点下标,默认'id'
* @param string $defaultPar 父id节点下标,默认'pid'
* @return onject
*/
public function mark($data, $children = 'children', $defaultId = 'id', $defaultPar = 'pid')
{
$data = $this->collection($data);
$tree = [];
foreach ($data as $item) {
$tree[$item[$defaultId]] = $item;
$tree[$item[$defaultId]][$children] = [];
}
foreach ($tree as $key => $item) {
if ($item[$defaultPar] != 0) {
$tree[$item[$defaultPar]][$children][] = &$tree[$key];
if (empty($tree[$key][$children])) unset($tree[$key][$children]);
}
}
foreach ($tree as $key => &$item) {
if ($item[$defaultPar] != 0) unset($tree[$key]);
if (empty($item[$children])) unset($item[$children]);
}
$this->tree = $tree;
return $this;
}
这段代码在低于7.0的版本中没有问题,转到7.2就报错了.报错内容如下:
出错行数在
个人觉得是&引用的问题 百度搜索过没有答案,希望能得到答案谢谢~
引用一般是用在方法的参数传递吧,没这样用过