Функция PHP array_key_exists() проверяет, существует ли ключ в массиве. Синтаксис функции array_key_exists():
array_key_exists ( string|int $key , array $array ) : bool
где:
Функция array_key_exists() возвращает true, если ключ существует в массиве. В противном случае возвращается false.
Обратите внимание, что функция array_key_exists() ищет ключ только в первом измерении массива $array. Если массив $array многомерный, функция array_key_exists() не найдет $ key во вложенном измерении (массиве).
В следующем примере функция array_key_exists() используется для проверки наличия ключа "admin" в массиве $roles:
<?php
$roles = [
'admin' => 1,
'approver' => 2,
'editor' => 3,
'subscriber' => 4
];
$result = array_key_exists('admin', $roles);
var_dump($result); // bool(true)
В следующем примере возвращается false, потому что в массиве $roles нет ключа "publisher":
<?php
$roles = [
'admin' => 1,
'approver' => 2,
'editor' => 3,
'subscriber' => 4
];
$result = array_key_exists('publisher', $roles);
var_dump($result); // bool(false)
Если значение элемента массива не равно null, и array_key_exists(), и isset() возвращают true, если ключ существует в массиве, и false, если нет. Например:
<?php
$roles = [
'admin' => 1,
'approver' => 2,
'editor' => 3,
'subscriber' => 4
];
var_dump(isset($roles['approver'])); // bool(true)
var_dump(array_key_exists('approver', $roles)); // bool(true)
В следующем примере возвращается false, поскольку ключ "user" не существует в массиве $roles:
<?php
$roles = [
'admin' => 1,
'approver' => 2,
'editor' => 3,
'subscriber' => 4
];
var_dump(isset($roles['user'])); // bool(false)
var_dump(array_key_exists('user', $roles)); // bool(false)
Однако, если значение ключа равно null, функция isset () вернет false, а функция array_key_exists () вернет true.
Пример:
<?php
$post = [
'title' => 'PHP array_key_exists',
'thumbnail' => null
];
var_dump(array_key_exists('thumbnail', $post)); // bool(true)
var_dump(isset($post['thumbnail'])); // bool(false)