php代码修改,Cannot use string offset as an array

下面的这段代码报错,Uncaught PHP Exception SymfonyComponentDebugExceptionFatalThrowableError: "Cannot use string offset as an array" at /var/www/dot/src/AppBundle/BlogService/BlogMenu.php line 201

可以看出是Cannot use string offset as an array
中文意思大概不能使用字符串偏移作为数组
201行 $listData[$i]['item'] = $item;
请问,这个该怎么改,能帮忙改下吗?

clipboard.png

  private function toList($lists)
    {
        if ($lists == null) {
            return null;
        }
        $listData = '';
        $prevElement = '';
        $i = 0;
        $item = '';
        $j = 0;
        foreach ($lists as $list) {
            switch ($list['type']) {
                case 'post':
                    $item = $this->getPost($list);
                    break;
                case 'link':
                    $item = $this->getLink($list);
                    break;
                case 'header':
                    $item = $this->getHeader($list);
                    break;
                case 'category':
                    $item = $this->getCategory($list);
                    break;
            }
            if ($list['parent'] == 1 && $i > 0) {
                if ($prevElement['parent'] == 0) {
                    $j = $i - 1;
                }
                $listData[$j]['child'][] = $item;
            } else {

                $listData[$i]['item'] = $item;
            }
            $prevElement = $list;
            $i++;

        }
        return $listData;
    }
阅读 5.7k
2 个回答

你把 listData 赋值成了 '',却用数组方式来访问。。当然会错了。

你var_dump出来, 自然就知道原因了. $listData[$i] 肯定是一个字符串, 本来就不能当成数组赋值.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题