Errore irreversibile: imansible utilizzare l'offset della string come matrix

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] => ) } 

Quando elaboro l'arrays sub-interno

 for($in=0 ; $in < count($auth); $in++){ $autsub = $auth[$in]["sub"]; for($g=0 ; $g<count($autsub); $g++){ echo $autsub[$g]["auth_id"]; } } 

mostra questo errore

Errore irreversibile: imansible utilizzare l'offset della string come arrays ………

come posso evitare che 🙁

Il problema è che l'ultima voce nell'arrays ( 2 ) non ha un sub arrays, ma stai provando ad accedervi comunque. Dovrai controllare se la voce esiste e se si tratta di un arrays prima di eseguirne il looping. Ecco un esempio usando foreach :

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

È ansible testare il tipo di offset con la function is_arrays (). Se vuoi una risposta migliore, inserisci il codice di elaborazione. Verifica se $ auth [$ in] e $ autsub [$ g] sono arrays.