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]??[]) ;
?>
CARVIEW |
array_key_exists
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
array_key_exists — Checks if the given key or index exists in the array
Description
array_key_exists() returns true
if the
given key
is set in the array.
key
can be any value possible
for an array index.
Parameters
key
-
Value to check.
array
-
An array with keys to check.
Return Values
Returns true
on success or false
on failure.
Note:
array_key_exists() will search for the keys in the first dimension only. Nested keys in multidimensional arrays will not be found.
Changelog
Version | Description |
---|---|
8.0.0 |
The key parameter now accepts
bool, float, int,
null, resource, and
string as arguments.
|
8.0.0 |
Passing an object to the array parameter is no longer supported.
|
7.4.0 |
Passing an object to the array parameter has been deprecated. Use property_exists() instead.
|
Examples
Example #1 array_key_exists() example
<?php
$searchArray = ['first' => 1, 'second' => 4];
var_dump(array_key_exists('first', $searchArray));
?>
The above example will output:
bool(true)
Example #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
$searchArray = ['first' => null, 'second' => 4];
var_dump(isset($searchArray['first']));
var_dump(array_key_exists('first', $searchArray));
?>
The above example will output:
bool(false) bool(true)
See Also
- isset() - Determine if a variable is declared and is different than null
- array_keys() - Return all the keys or a subset of the keys of an array
- in_array() - Checks if a value exists in an array
- property_exists() - Checks if the object or class has a property
User Contributed Notes 3 notes
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;
}
<?php
// Define an associative array
$userProfile = [
'name' => 'John Doe',
'email' => 'john.doe@example.com',
'age' => 30,
'country' => 'USA'
];
// Key to check
$keyToCheck = 'email';
// Use array_key_exists to check if the key exists in the array
if (array_key_exists($keyToCheck, $userProfile)) {
echo "The key '$keyToCheck' exists in the array with value: " . $userProfile[$keyToCheck];
} else {
echo "The key '$keyToCheck' does not exist in the array.";
}
?>
