Где isset или array_key_exist подходит для использования?
В моем случае оба работают.
if( isset( $array['index'] ) {
//Do something
}
if( array_key_exists( 'index', $array ) {
//Do something
}
Где isset или array_key_exist подходит для использования?
В моем случае оба работают.
if( isset( $array['index'] ) {
//Do something
}
if( array_key_exists( 'index', $array ) {
//Do something
}
Смотрите: http://us3.php.net/array_key_exists
isset()не возвращаетTRUEдля ключей массива, которые соответствуют значениюNULL, аarray_key_exists()-.
Развернуть на Mantas отличный ответ, в котором описывается поведенческая разница кода:
array_key_exists, если вы хотите узнать, существует ли этот ключ в массиве, независимо от того, содержит ли оно значение или нет.isset, если вы хотите узнать, существует ли ключ в массиве и имеет значение в нем смысла. Обратите внимание, что isset вернет значение false для значений NULL.Различия в семантике, описанные выше, приводят к различию в поведении, описанному Mantas.
Следующий код:
$aTestArray = array();
echo "Before key is created\r\n";
echo "isset:\r\n";
var_dump( isset( $aTestArray['TestKey'] ) );
echo "array_key_exists:\r\n";
var_dump( array_key_exists( 'TestKey', $aTestArray ) );
echo "\r\n";
$aTestArray['TestKey'] = NULL;
echo "Key is created, but set to NULL\r\n";
echo "isset:\r\n";
var_dump( isset( $aTestArray['TestKey'] ) );
echo "array_key_exists:\r\n";
var_dump( array_key_exists( 'TestKey', $aTestArray ) );
echo "\r\n";
$aTestArray['TestKey'] = 0;
echo "Key is created, and set to 0 (zero)\r\n";
echo "isset:\r\n";
var_dump( isset( $aTestArray['TestKey'] ) );
echo "array_key_exists:\r\n";
var_dump( array_key_exists( 'TestKey', $aTestArray ) );
echo "\r\n";
Выходы:
Before key is created
isset:
bool(false)
array_key_exists:
bool(false)
Key is created, but set to NULL
isset:
bool(false)
array_key_exists:
bool(true)
Key is created, and set to 0 (zero)
isset:
bool(true)
array_key_exists:
bool(true)
Побочным эффектом является то, что ключ, который возвращает "false" из isset, все равно может быть включен как ключ в для каждого цикла, как в
foreach( $array as $key => value )
По-моему, если вы, безусловно, пойдете через использование arrays
Я предлагаю использовать array_key_exists() просто сопровождал его некоторыми полезными функциями массива
как array_filter(). Также факт, что функции массива созданы из-за массивов и простоты использования isset(), будет иметь лучшее место для использования, например, для проверки переменной существование., Или иначе у вас есть еще много функций для поиска arrays.
Но ведь все зависит от вас, какой результат вы ожидаете от того, хотите ли вы array() с NULL или нет.