#php #arrays #foreach
#php #массивы #foreach
Вопрос:
foreach ($array as $value) {
dump($value);
}
С помощью дампа моего цикла я получаю этот вывод:
array:2 [▼
"id" => "9a989408e5"
"Name" => "cat"
]
array:2 [▼
"id" => "47601aae85"
"Name" => "elephant"
]
array:2 [▼
"uuid" => "7cb16ddafc"
"Anzahl" => "rabbit"
]
Но если я попытаюсь перехватить только идентификатор….
foreach ($array as $value) {
dump($value['id']);
}
Я получаю сообщение об ошибке:
Предупреждение: недопустимый идентификатор смещения строки
Комментарии:
1. Что вы пытались отладить проблему? Можете ли вы поделиться более подробной информацией, чтобы другие могли воспроизвести проблему?
2. Проблема @NicoHaase была решена
if (is_array($value) || is_object($value)){
3. …. решаемая? Этот код не проверяет, существует ли ключ массива
id
в конце концов4. @NicoHaase Хммм. Но я больше не получаю сообщение об ошибке. Вот почему я думал, что это решено
5. Вы не проверили, что
$value
действительно содержит?
Ответ №1:
Вы можете просто проверить, существует ли этот ключ в массиве, используя array_key_exists() . Вот так:
if(array_key_exists('id', $value)){
dump($value['id']);
}
Комментарии:
1. это не работает. Я получаю сообщение об ошибке
Warning: array_key_exists() expects parameter 2 to be array, string given
2. Я предполагаю, что вы выполняете проверку if в
foreach
цикле? Основываясь на вашем выводе дампа, этого не должно произойти. Однако вы можете объединить свой собственный ответ сarray_key_exists
. Сначала проверьте, является ли это массивом. Затем проверьте, имеет ли массив идентификатор ключа.
Ответ №2:
foreach ($array as $value) {
if (is_array($value) || is_object($value)){
dump($value['id']);
}
}
Комментарии:
1. Этот код не проверяет, существует ли ключ id в массиве