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"]; } }
он показывает эту ошибку
Неустранимая ошибка: нельзя использовать смещение строки в виде массива ………
- Массив изображений, не отображаемых должным образом.
- Как удалить дубликаты в массиве?
- PHP Foreach Pass по ссылке: Дублирование последнего элемента? (Ошибка?)
- Печать содержимого массива на отдельных строках
- Найти число, которое больше или равно N в массиве
- Доступ к массиву JSON после json_decode / многомерного массива
как я могу избежать этого 🙁
Проблема в том, что последняя запись в массиве ( 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] массивами.