@Shimpanze

Объясните, пожалуйста, простым, понятным языком, почему одно не равно другому?

Работает:

// это массив?
// в этом массиве есть ключ "my_key"?
if ( is_array( $value ) && isset( $value["my_key"] ) ) print "в этом массиве есть ключ my_key";


Не работает:

*теперь переписываем это условие, через охранные выражения

// это не массив? - переходим к следующей итерации
if ( ! is_array( $value ) ) continue;
// первое охранное выражение прошли - значит это массив

// в этом массиве нет ключа "my_key"? - переходим к следующей итерации
if ( ! array_key_exists( "my_key", $value ) ) continue;

// прошли оба охранных выражения - значит это массив и в нем есть ключ "my_key"

print "в этом массиве есть ключ my_key";


Объясните, пожалуйста, почему не работает?
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
в этом массиве есть ключ "my_key"?


Определяет, была ли установлена переменная значением отличным от NULL
https://www.php.net/manual/ru/function.isset.php

Простым и понятным языком: isset работает не так, как array_key_exists, поэтому одно не равно другому.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Smart Медицина Москва
от 150 000 ₽
Spice IT Recruitment Москва
До 230 000 ₽
Playkot Санкт-Петербург
от 150 000 до 200 000 ₽