isset
isset — 检测变量是否已声明并且其值不为 null
如果一个变量已经被使用 unset() 释放,它将不再被认为已设置。
若使用 isset() 测试一个被赋值为 null 的变量,将返回 false。 同时要注意的是 null 字符("\0")并不等同于 PHP 的 null 常量。
如果一次传入多个参数,那么 isset() 只有在全部参数都已被设置时返回 true。 计算过程从左至右,中途遇到未设置的变量时就会立即停止。
array_key_exists
array_key_exists — 检查数组里是否有指定的键名或索引
组里有键 key 时,array_key_exists() 返回 true。 key 可以是任何能作为数组索引的值。
以上摘自PHP手册
https://www.php.net/manual/zh/function.array-key-exists.php
https://www.php.net/manual/zh/function.isset
isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
<?php
$arr = array('name' => null, 'age' => 23);
// returns false
isset($arr['name']);
// returns true
array_key_exists('name', $arr);
?>
另外,手册评论里有人测试过,isset 的速度比 array_key_exists 要快一些。