请问这段代码到底什么问题? 为什么会报错;

baidu_27153093 2015-05-06 11:30:44


Array
(
[0] => Array
(
[id] => 3
[fid] => 0
[name] => 333
[son] => Array
(
[0] => Array
(
[id] => 2
[fid] => 3
[name] => 2_3
[son] => Array
(
[0] => Array
(
[id] => 4
[fid] => 2
[name] => 2_4
)

)

)

[1] => Array
(
[id] => 5
[fid] => 3
[name] => 2_3
)

)

)

[1] => Array
(
[id] => 1
[fid] => 0
[name] => 111
)

)

这是一个tree结构的数组,我希望在每个数组元素上加一个层级元素;

function tree_add_level($tree){
foreach($tree as &$val){
if(!isset($val['_level'])){
$val['_level']=0;//顶层为0
}
if(isset($val['son'])){
$val['son']['_level']=$val['_level']+1; //下级加1
tree_add_level($val['son']);
}
}
return $tree;
}




但是却提示语法错误,求解决方法,或者其他方式. 谢谢
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijpwsw 2015-05-06
  • 打赏
  • 举报
回复
警告其实不影响,只要你得到了你想要的结果
baidu_27153093 2015-05-06
  • 打赏
  • 举报
回复
引用 3 楼 lijpwsw 的回复:
你需要判断一下$tree是否是数组
谢谢,我加的
引用 5 楼 lijpwsw 的回复:
你这个数组能粘贴出来吗,我测试一下
谢谢了,已经解决了; 是逻辑错误,少了层引用; function tree_add_level(&$tree,$n=0){ foreach($tree as &$val){ $val['_level']=$n; isset($val['son']) && tree_add_level($val['son'],$n+1); } }
lijpwsw 2015-05-06
  • 打赏
  • 举报
回复
你这个数组能粘贴出来吗,我测试一下
baidu_27153093 2015-05-06
  • 打赏
  • 举报
回复
引用 3 楼 lijpwsw 的回复:
你需要判断一下$tree是否是数组
$tree 和 $tree['son'] 100%是数组; 测试的就是上面的案例数组;
lijpwsw 2015-05-06
  • 打赏
  • 举报
回复
你需要判断一下$tree是否是数组
lijpwsw 2015-05-06
  • 打赏
  • 举报
回复

function tree_add_level($tree){
if(is_array($tree)){
    foreach($tree as &$val){
        if(!isset($val['_level'])){
            $val['_level']=0;//顶层为0
        }
        if(isset($val['son'])){
            $val['son']['_level']=$val['_level']+1; //下级加1
            tree_add_level($val['son']);
        }
    }
}
    return $tree;
}
baidu_27153093 2015-05-06
  • 打赏
  • 举报
回复
提示: Warning: Cannot use a scalar value as an array in D:\Web\BOOT\newfile.php on line 28 tree_add_level($val['son']); 这句代码到底有什么问题? 递归下而已.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧