檢查金鑰是否存在
使用 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()
通常是不受歡迎的。
另請注意,如果根本沒有定義 $map
,isset()
和 !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()
的別名。