PHP 8.4.2 Released!

array_key_exists

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

array_key_existsChecks if the given key or index exists in the array

Опис

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

array_key_exists() returns true if the given key is set in the array. key can be any value possible for an array index.

Параметри

key

Value to check.

array

An array with keys to check.

Значення, що повертаються

Повертає true у разі успіху або false в разі помилки.

Зауваження:

array_key_exists() will search for the keys in the first dimension only. Nested keys in multidimensional arrays will not be found.

Журнал змін

Версія Опис
8.0.0 The key parameter now accepts bool, float, int, null, resource, and string as arguments.

Приклади

Приклад #1 array_key_exists() example

<?php
$search_array
= array('first' => 1, 'second' => 4);
if (
array_key_exists('first', $search_array)) {
echo
"The 'first' element is in the array";
}
?>

Приклад #2 array_key_exists() vs isset()

isset() does not return true for array keys that correspond to a null value, while array_key_exists() does.

<?php
$search_array
= array('first' => null, 'second' => 4);

// returns false
isset($search_array['first']);

// returns true
array_key_exists('first', $search_array);
?>

Примітки

Зауваження:

For backward compatibility reasons, array_key_exists() will also return true if key is a property defined within an object given as array. This behaviour is deprecated as of PHP 7.4.0, and removed as of PHP 8.0.0.

To check whether a property exists in an object, property_exists() should be used.

Прогляньте також

  • isset() - Визначає, чи для змінної встановлено значення та воно не рівне null
  • array_keys() - Return all the keys or a subset of the keys of an array
  • in_array() - Перевіряє, чи існує в масиві значення
  • property_exists() - Checks if the object or class has a property

add a note

User Contributed Notes 2 notes

up
9
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
6
Rumour
1 year 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]??[]) ;

?>
To Top