Как я могу проверить предупреждение о недопустимом смещении?

#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 в массиве