Isset vs array_key_exists

18 浏览
0 Comments

Isset vs array_key_exists

在哪种情况下适合使用issetarray_key_exist

在我的情况下,两者都可以使用。

if( isset( $array['index'] ) {
   //做某事
}    
if( array_key_exists( 'index', $array ) {
   //做某事
}

0
0 Comments

在我看来,如果你要深入使用数组,我建议使用array_key_exists(),并结合一些有用的数组函数,比如array_filter()。事实上,数组函数的创建是为了处理数组并提供使用的便利性,而isset()则最适合用于检查变量是否存在。当然,还有很多其他的数组函数可以用于探索。

但最终,这取决于你希望得到什么样的结果,你是想要一个带有NULL的数组,还是不希望有。

0
0 Comments

在PHP中,使用isset和array_key_exists函数可以判断一个数组中是否存在某个键。然而,它们之间存在一些行为上的差异。

如果想要判断一个键是否存在于数组中,无论该键是否包含一个值,可以使用array_key_exists函数。

如果想要判断一个键是否存在于数组中,并且该键对应的值有意义(不为NULL),可以使用isset函数。需要注意的是,对于值为NULL的情况,isset函数会返回false。

由上述语义差异导致了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)

需要注意的是,使用isset返回false的键仍然可以在foreach循环中作为键出现。

此外,需要注意的是,isset函数的执行速度比array_key_exists函数快得多。

以上就是isset和array_key_exists之间的差异以及解决方法的整理。

0
0 Comments

在PHP中,我们经常会遇到需要检查一个数组中是否存在某个键的情况。为了判断一个键是否存在,通常会使用`isset()`或者`array_key_exists()`函数。然而,这两个函数在处理键对应值为`NULL`的情况时会有不同的行为。

根据PHP官方文档中的说明:isset()函数在键对应值为`NULL`时不会返回`TRUE`,而array_key_exists()函数会返回`TRUE`。

这种不一致的行为可能会导致一些问题。举个例子,假设我们有一个数组`$arr`,其中一个键对应值为`NULL`。如果我们使用`isset()`函数来检查这个键是否存在,结果会是`FALSE`。而如果我们使用`array_key_exists()`函数来检查这个键是否存在,结果会是`TRUE`。

为了解决这个问题,我们可以根据具体的需求选择使用`isset()`或者`array_key_exists()`函数。如果我们只是简单地想要检查一个键是否存在,并且不关心键对应的值是什么,那么使用`array_key_exists()`函数可能更合适。而如果我们想要同时检查一个键是否存在,并且判断键对应的值是否为`NULL`,那么使用`isset()`函数可能更合适。

总之,了解`isset()`和`array_key_exists()`函数的区别以及它们在处理键对应值为`NULL`的情况时的不同行为是非常重要的。根据具体的需求选择合适的函数可以避免一些潜在的问题。

0