array_key_exists
(PHP 4 >= 4.0.7, PHP 5, PHP 7)
array_key_exists — Проверяет, присутствует ли в массиве указанный ключ или индекс
Описание
Функция array_key_exists() возвращает TRUE
, если
в массиве присутствует указанный ключ key
.
Параметр key
может быть любым значением,
которое подходит для индекса массива.
Список параметров
-
key
-
Проверяемое значение
-
array
-
Массив с проверяемыми ключами
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Примеры
Пример #1 Пример использования array_key_exists()
<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "Массив содержит элемент 'first'.";
}
?>
Пример #2 array_key_exists() и isset()
isset() не возвращает TRUE
для ключей массива,
указывающих на NULL
, а
array_key_exists() возвращает.
<?php
$search_array = array('first' => null, 'second' => 4);
// возвращает false
isset($search_array['first']);
// возвращает true
array_key_exists('first', $search_array);
?>
Примечания
Замечание:
Для обратной совместимости может быть использован следующий устаревший псевдоним: key_exists()
Замечание:
По причинам обратной совместимости array_key_exists() возвращает
TRUE
, еслиkey
является свойством объекта, переданным в качестве параметраarray
. На это поведение не стоит полагаться, и перед использованием данной функции необходимо проверять, что параметрarray
имеет тип array.Чтобы проверить, содержит ли объект какое-либо свойство, используйте функцию property_exists().
Смотрите также
- isset() - Определяет, была ли установлена переменная значением отличным от NULL
- array_keys() - Возвращает все или некоторое подмножество ключей массива
- in_array() - Проверяет, присутствует ли в массиве значение
- property_exists() - Проверяет, содержит ли объект или класс указанный атрибут
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения, относящиеся к переменным и типам
- Массивы
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_key_exists
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- each
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
Коментарии
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]??[]) ;
?>