Вы можете использовать либо языковую конструкцию isset
, либо функцию array_key_exists
: числовой или строковый ключ не имеет значения: это все же ассоциативный массив, для PHP .
isset
должно быть немного быстрее (поскольку это не функция) , но вернет false
, если элемент существует и имеет значение NULL
.
Например, учитывая этот массив:
$a = array(
123 => 'glop',
456 => null,
);
И эти три теста, опираясь на isset
:
var_dump(isset($a[123]));
var_dump(isset($a[456]));
var_dump(isset($a[789]));
Вы получите такой вывод:
boolean true
boolean false
boolean false
Потому что:
- в первом случае элемент существует, а не
null
- во втором элементе существует, но равен
null
- и, в-третьих, элемент не существует
С другой стороны, используя array_key_exists
как в этой части кода:
var_dump(array_key_exists(123, $a));
var_dump(array_key_exists(456, $a));
var_dump(array_key_exists(789, $a));
Вы получите этот вывод:
boolean true
boolean true
boolean false
Потому что:
- в двух первых случаях элемент существует - даже если во втором случае
null
- и, в-третьих, его не существует.