PANOV_DEV
@PANOV_DEV

Как улучшить код, который проверяет наличие элемента в массиве и его значение?

Хочу проверить, существует ли данный ключ в массиве если да, то проверяем, значение его истинно или нет, если да то что-то делаем.

Мой код, задача работает, но хочу как-то его сократить. Искал функции для работы с массивами, но ничего не нашёл. Готовый вариант мне не нужен, просто нужна функция и немножечко намекните.

if (isset($arr['test']) && $arr['test'] === true) {
 // todo
}
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Vitsliputsli
Не нужно ничего сокращать. Код вполне краток и понятен. Дальнейшие сокращения лишь ухудшат читаемость.
Но если хочется поговнокодить можно взять empty.
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Моя задача такова, хочу проверить, существует ли данный ключ в массиве


Для этой проверки нужно использовать функцию array_key_exists

Потому что

$array = ['key' => null]
isset($array['key']) // false
array_key_exists('key', $array); // true
Ответ написан
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Тут вопрос не столько в сокращении сколько в осмысленности.

И ответ зависит от двух вводных, которые мы не знаем:
1. по какой причине элемент 'test' может отсутствовать
2. какие ещё значения могут быть у $arr['test']

Если совсем всё равно на всё и пишем говнокод-стайл лишь бы покороче, то, как правильно написано в соседнем ответе - empty().

Если элемент обязательно должен присутствовать, то либо убираем проверку на isset совсем, либо - если это интерактивное приложение - выносим отдельно, и при отсутствии элемента сообщаем об ошибке. Пусть даже и тупо 400 кодом.

Если у $arr['test'] не могут быть другие значения, кроме true, то тоже проверить, и выбросить ошибку, если значение какое-то другое.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы