繁体   English   中英

致命错误:不能将字符串偏移用作数组

[英]Fatal error: Cannot use string offset as an array

  Array
(
    [0] => Array
        (
            [auth_id] => 1
            [auth_section] => Client Data Base
            [auth_parent_id] => 0
            [auth_admin] => 1
            [sub] => Array
                (
                    [0] => Array
                        (
                            [auth_id] => 2
                            [auth_section] => Client Contact
                            [auth_parent_id] => 1
                            [auth_admin] => 1
                        )

                )

        )

    [1] => Array
        (
            [auth_id] => 6
            [auth_section] => All Back Grounds
            [auth_parent_id] => 0
            [auth_admin] => ,4
            [sub] => Array
                (
                    [0] => Array
                        (
                            [auth_id] => 7
                            [auth_section] => Edit Custom
                            [auth_parent_id] => 6
                            [auth_admin] => 1
                        )
                )

        )

    [2] => Array
        (
            [auth_id] => 20
            [auth_section] => Order Mail
            [auth_parent_id] => 0
            [auth_admin] => 1
            [sub] => 
        )

}

当我处理子内部数组时

for($in=0 ; $in < count($auth); $in++){

    $autsub     =   $auth[$in]["sub"];

    for($g=0 ; $g<count($autsub); $g++){

        echo $autsub[$g]["auth_id"];

    }
}

它显示了这个错误

致命错误:不能将字符串偏移量用作数组.........

我怎么能避免这种情况:(

问题是数组( 2 )中的最后一个条目没有sub数组,但无论如何你都试图访问它。 在循环之前,您需要检查条目是否存在以及它是否为数组。 这是一个使用foreach的例子:

foreach ($array as $auth) {
    if (!empty($auth['sub']) && is_array($auth['sub'])) {
        foreach ($auth['sub'] as $sub) {
            if (!empty($sub['auth_id'])) {
                echo $sub['auth_id'];
            }
        }
    }
}

您可以使用is_array()函数测试偏移类型。 如果您想要更好的答案,请发布处理代码。 测试$ auth [$ in]和$ autsub [$ g]是否为数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM