@Us59

Как проверить элемент массива на существование?

Все вроде просто, но столкнулся с такой проблемой:
$json = '{"test1":"123","response":"ok","activationStatus":null}';

$data = json_decode($json, true);

if (isset($data['activationStatus'])) {
echo 'test';
}

Мне нужно проверять, существует ли переменная "activationStatus" и в данном случае условие не срабатывает. Почему? И как это решить?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 2
@green_goo
isset() вернет FALSE при проверке переменной которая была установлена значением NULL

https://www.php.net/manual/ru/function.isset.php
Для проверки ключей массива следует использовать функцию array_key_exists
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Самый безопасный способ проверки пользовательских данных перед обработкой:
$re = '/(\"activationStatus\"(\:|\s+?\:))/m';
$json = '{"test1":"123","response":"ok","activati5onStatus":null}';
if(!preg_match($re,$json)) echo 'Переменная отсутствует!';
https://ideone.com/xEckwh
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Потому что как таковая activationStatus существует, но имеет значение null. Можно проверять так:
if (isset($data['activationStatus']) and $data['activationStatus'] !== null) {
echo 'test';
}
Ответ написан
JackWilliams
@JackWilliams
используйте array_key_exists и будет вам счастье:
$json = '{"test1":"123","response":"ok","activationStatus":null}';

$data = json_decode($json, true);

var_dump($data);

if (array_key_exists('activationStatus', $data)) {
  echo 'Работает!';
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы