array_key_exists($key, $array)
и !empty($array[$key])
могут давать разные результаты, поэтому это не вопрос производительности или предпочтений .
| array_key_exists($key, $array) | !empty($array[$key]) |
+-----------------------------+--------------------------------|----------------------+
| $array[$key] does not exist | false | false |
| $array[$key] is truthy | true | true |
| $array[$key] is falsey | true | false |
Вы можете видеть, что таблица истинности отличается для значений Falsey (false, 0, NULL и т. Д.). Следовательно, !empty($array[$key])
не подходит в ситуациях, когда можно считать значение Falsey присутствует , например. $array["number_of_children"]
не следует проверять на пустоту, если значение 0 имеет смысл.
Вы можете использовать isset($array[$key])
, который дает результаты, идентичные array_key_exists($key, $array)
, с одним исключением:
| array_key_exists($key, $array) | isset($array[$key]) |
+-------------------------------------+--------------------------------|---------------------+
| $array[$key] does not exist | false | false |
| $array[$key] is truthy | true | true |
| $array[$key] is falsey but not NULL | true | true |
| $array[$key] is NULL | true | false |