致命错误:无法使用字符串作为数组
问题描述:
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"];
}
}
它示出了该误差
Fatal error: Cannot use string offset as an array.........
我怎样才能避免:(
答
问题是数组中的最后一项(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'];
}
}
}
}
+0
谢谢deceze :) – learner 2010-06-17 08:31:16
答
您可以使用is_array()函数测试偏移类型。如果您想要更好的答案,请发送处理代码。 测试$ auth [$ in]和$ autsub [$ g]是否为数组。
只需检查代码 – learner 2010-06-17 08:20:37