在递归时,关于getTreeCategory()函数传递的第三个参数,在if()中打印$level,为什么结果不一样呢? ++$level 应该是等同于 $level+1啊。按理都应该输出 0 1 2 2 2 0 啊!!!
第三个参数如果是 $level+1 ,这时打印$level会输出:
C:\wamp64\www\taobao\c.php:42:int 0
C:\wamp64\www\taobao\c.php:42:int 1
C:\wamp64\www\taobao\c.php:42:int 2
C:\wamp64\www\taobao\c.php:42:int 2
C:\wamp64\www\taobao\c.php:42:int 2
C:\wamp64\www\taobao\c.php:42:int 0
第三个参数如果是 ++$level ,这时打印$level会输出:
C:\wamp64\www\taobao\c.php:42:int 0
C:\wamp64\www\taobao\c.php:42:int 1
C:\wamp64\www\taobao\c.php:42:int 2
C:\wamp64\www\taobao\c.php:42:int 3
C:\wamp64\www\taobao\c.php:42:int 4
C:\wamp64\www\taobao\c.php:42:int 1
$cat_list = [
[
'cat_id' => '1',
'cat_name' => 'web前端',
'parent_id' => '0'
], [
'cat_id' => '2',
'cat_name' => 'PHP',
'parent_id' => '0'
], [
'cat_id' => '3',
'cat_name' => 'JavaScript',
'parent_id' => '1'
], [
'cat_id' => '4',
'cat_name' => 'angularJS',
'parent_id' => '3'
], [
'cat_id' => '5',
'cat_name' => 'vueJS',
'parent_id' => '3'
], [
'cat_id' => '6',
'cat_name' => 'reactJS',
'parent_id' => '3'
]
];
function getTreeCategory($cat_list, $cat_id = 0, $level = 0)
{
//遍历数组得到每一个元素
static $arr = [];
foreach ($cat_list as $k => $v) {
//只要$v['parent_id'] == $cat_id,那么说明当前$v的,父类是$cat_id
if ($v['parent_id'] == $cat_id) {
$v['level'] = $level;
$arr[] = $v;
//递归
//getTreeCategory($cat_list, $v['cat_id'], $level + 1);
getTreeCategory($cat_list, $v['cat_id'], ++$level);
}
}
return $arr;
}
var_dump(getTreeCategory($cat_list));