CakeFest 2024: The Official CakePHP Conference

array_key_exists

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

array_key_existsПроверяет, существует ли в массиве заданный ключ или индекс

Описание

array_key_exists(string|int|float|bool|resource|null $key, array $array): bool

Функция array_key_exists() возвращает true, если заданный ключ (key) содержится в массиве. В параметр key разрешено передавать значение, которое допустимо в качестве индекса массива.

Список параметров

key

Проверяемое значение.

array

Массив с проверяемыми ключами.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false, если возникла ошибка.

Замечание:

Функция array_key_exists() ищет ключи только на первом уровне массива. Внутренние ключи в многомерных массивах найдены не будут.

Список изменений

Версия Описание
8.0.0 Параметр key теперь принимает в качестве аргументов значения bool, float, int, null, resource и string.

Примеры

Пример #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);

?>

Примечания

Замечание:

По причинам обратной совместимости функция array_key_exists() возвращает true, если ключ (key) — это свойство объекта (object), переданного в качестве параметра array. Поведение устарело в PHP 7.4.0 и удалено в PHP 8.0.0.

Проверить, содержит ли объект заданное свойство, можно функцией property_exists().

Смотрите также

  • isset() - Определяет, была ли установлена переменная значением, отличным от null
  • array_keys() - Возвращает все или некоторое подмножество ключей массива
  • in_array() - Проверяет, присутствует ли в массиве значение
  • property_exists() - Проверяет, есть ли у объекта или класса свойство

add a note

User Contributed Notes 3 notes

up
12
Julian
1 year ago
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;
}
up
4
Rumour
8 months ago
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]??[]) ;

?>
up
-41
manhon824 at gmail dot com
12 years ago
I took hours for me to debug, and I finally recognized that,

You have to reset the $array before using array_key_exists
reset($array);
array_key_exists($needle,$array);

Or you will get no reply.
To Top