(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
array_key_exists — Проверяет, содержит ли массив ключ или индекс
Функция array_key_exists() возвращает значение true ,
если массив содержит ключ key.
Параметр key принимает значения,
допустимые для индексов массива.
keyПроверяемое значение.
arrayМассив с проверяемыми ключами.
Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка.
Замечание:
Функция array_key_exists() ищет ключи только на первом уровне массива. Функция не найдёт внутренние ключи в многомерных массивах.
| Версия | Описание |
|---|---|
| 8.5.0 |
Использование null в параметре key устарело,
вместо этого используйте пустую строку.
|
| 8.0.0 |
Параметр key теперь принимает аргументы с типами
bool , float , int ,
null , resource
и string .
|
| 8.0.0 |
Передача значения с типом object в параметр array больше не поддерживается.
|
| 7.4.0 |
Передача значения с типом object в параметр array устарела.
Для проверки свойства вместо этой функции вызывают функцию property_exists() .
|
Пример #1 Пример проверки ключа или индекса в массиве функцией array_key_exists()
<?php
$searchArray = ['first' => 1, 'second' => 4];
var_dump(array_key_exists('first', $searchArray));
?>Результат выполнения приведённого примера:
bool(true)
Пример #2 Пример работы функции array_key_exists() с языковой конструкцией isset()
Конструкция языка isset() не возвращает true для ключей массива,
которые связали со значением null ,
а функция array_key_exists() — возвращает.
<?php
$searchArray = ['first' => null, 'second' => 4];
var_dump(isset($searchArray['first']));
var_dump(array_key_exists('first', $searchArray));
?>Результат выполнения приведённого примера:
bool(false) bool(true)
When you want to check multiple array keys:
<?php
$array = [];
$array['a'] = '';
$array['b'] = '';
$array['c'] = '';
$array['d'] = '';
$array['e'] = '';
// all given keys a,b,c exists in the supplied array
var_dump(array_keys_exists(['a','b','c'], $array)); // bool(true)
function array_keys_exists(array $keys, array $array): bool
{
$diff = array_diff_key(array_flip($keys), $array);
return count($diff) === 0;
}In PHP7+ to find if a value is set in a multidimensional array with a fixed number of dimensions, simply use the Null Coalescing Operator: ??
So for a three dimensional array where you are not sure about any of the keys actually existing
<?php
// instead of:
$exists = array_key_exists($key1, $arr) && array_key_exists($key2, $arr[$key1]) && array_key_exists($key3, $arr[$key1][$key2]) ;
// use:
$exists = array_key_exists($key3, $arr[$key1][$key2]??[]) ;
?>