檢查金鑰是否存在

使用 array_key_exists()isset()!empty()

$map = [
    'foo' => 1,
    'bar' => null,
    'foobar' => '',
];

array_key_exists('foo', $map); // true
isset($map['foo']); // true
!empty($map['foo']); // true

array_key_exists('bar', $map); // true
isset($map['bar']); // false
!empty($map['bar']); // false

請注意,isset()null 值元素視為不存在。而 !empty() 對於任何等於 false 的元素都是一樣的(使用弱比較;例如,null''0 都被 !empty() 視為假)。雖然 isset($map['foobar']);true,但 !empty($map['foobar'])false。這可能會導致錯誤(例如,很容易忘記字串'0'被視為假)因此使用 !empty() 通常是不受歡迎的。

另請注意,如果根本沒有定義 $mapisset()!empty() 將起作用(並返回 false)。這使得它們在某種程度上容易出錯:

// Note "long" vs "lang", a tiny typo in the variable name.
$my_array_with_a_long_name = ['foo' => true];
array_key_exists('foo', $my_array_with_a_lang_name); // shows a warning
isset($my_array_with_a_lang_name['foo']); // returns false

你還可以檢查序數陣列:

$ord = ['a', 'b']; // equivalent to [0 => 'a', 1 => 'b']

array_key_exists(0, $ord); // true
array_key_exists(2, $ord); // false

請注意,isset() 具有比 array_key_exists() 更好的效能,因為後者是一種功能而前者是一種語言結構。

你也可以使用 key_exists() ,這是 array_key_exists() 的別名。