【问题标题】:Fatal error: Cannot use string offset as an array致命错误:不能将字符串偏移量用作数组
【发布时间】:2010-06-17 08:11:48
【问题描述】:
  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"];

    }
}

显示这个错误

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

我怎样才能避免这种情况:(

【问题讨论】:

    标签: arrays loops php


    【解决方案1】:

    问题是数组中的最后一个条目 (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'];
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多