isset и array_key_exists — в чем различие?

array key exists

Многие пхпшники недоумевают зачем сделана функция array_key_exists, когда есть обычный isset.
Проверочный код:

$testArray = array(1 =>; 'Первый', 'second' => 'Второй');
var_dump(isset($testArray[1]));            // =>; bool(true)
var_dump(array_key_exists(1, $testArray)); // => bool(true)

Если в массив попадает значение null, то тут сразу возникают отличия в их работе

$testArray = array(1 => 'Первый', 'second' => 'Второй', 3 => null);
 
var_dump(isset($testArray[3]));              // => bool(false)
var_dump(array_key_exists(3, $testArray));   // => bool(true)

В проверках следует применять array_key_exists если в массивах возможно значение null. Поведение isset в данном случае вполне оправдано, исходя из документации: «Determine if a variable is set and is not NULL«.

  • 10.03.2011
  • php