2010-06-17 43 views
3
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.........

我怎樣才能避免:(

+0

只需檢查代碼 – learner 2010-06-17 08:20:37

回答

9

問題是數組中的最後一項(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

0

您可以使用is_array()函數測試偏移類型。如果您想要更好的答案,請發送處理代碼。 測試$ auth [$ in]和$ autsub [$ g]是否爲數組。

相關問題