Как проверить массив php?
Сначала отлаживал внешний вид списка, потом понял, что данные иногда приходят объектом. PHP 8.3, нужен именно массив записей с полями, а не просто любое значение для foreach
Пока нет лидеров с лучшими ответами.
Ваш вопрос
Сначала отлаживал внешний вид списка, потом понял, что данные иногда приходят объектом. PHP 8.3, нужен именно массив записей с полями, а не просто любое значение для foreach
4.20
| Проверка | Что подтверждает |
|---|---|
is_array($data) | Значение имеет тип массива, даже если оно пустое. |
array_is_list($data) | Уже проверенный массив имеет последовательные индексы от нуля. |
| Проверка каждого элемента | Поля и их типы соответствуют ожидаемой записи. |
В PHP 8.3 обе функции доступны. Одна проверка внешнего типа не подтверждает корректность вложенных записей.
4o
is_array($data). Возможность обойти объект в foreach ещё не делает его массивом.array_is_list($data). Эта функция есть начиная с PHP 8.1.is_array([]) и array_is_list([]) истинны, а допустимость пустого списка определяют ваши требования.null выберите подходящую проверку: isset объединяет эти состояния, array_key_exists различает их.Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-pro
v4-pro
Как проверить массив php?
Начните с
is_array, затем проверьте форму списка и поля каждой записи. Объект, который допускает обход, может проходитьforeach, но это не означает соответствия требуемой структуре.Этот пример требует список массивов, у каждого из которых есть строковое поле
name. Он допускает пустой список, пустую строку в имени и дополнительные поля. Если ваши правила строже, каждое из этих условий нужно изменить явно. Например, непустое имя проверяется отдельно после подтверждения строкового типа.array_is_listпроверяет последовательные целочисленные индексы начиная с нуля. Массив с индексами 0 и 2 остаётся массивом, но уже не является списком по этому определению. Если порядок или числовые индексы не имеют значения, такая проверка может быть лишней.Внешний
is_arrayнужен перед вызовомarray_is_list, потому что последняя ожидает массив. Логическое условие в примере использует короткое замыкание: при неверном типе правая часть не вызывается.Для полей, где разрешён
null, вместоissetпотребуется проверка наличия черезarray_key_existsи отдельная проверка допустимого значения. Объект из JSON лучше декодировать в выбранном режиме на границе ввода, затем проверять структуру. Слепое приведение любого объекта к массиву скрывает несоответствие формата и не подтверждает ни состав полей, ни их смысл.