Php Isset vs数组\u密钥\u存在
Php Isset vs数组\u密钥\u存在,php,arrays,Php,Arrays,isset或array\u key\u存在于哪里适合使用 就我而言,这两种方法都有效 if( isset( $array['index'] ) { //Do something } if( array_key_exists( 'index', $array ) { //Do something } 见: isset()对于对应于NULL值的数组键不返回TRUE,而array\u key\u exists()返回 为了扩展Mantas的优秀答案,该答案描述了代码的行为差异
isset
或array\u key\u存在于哪里
适合使用
就我而言,这两种方法都有效
if( isset( $array['index'] ) {
//Do something
}
if( array_key_exists( 'index', $array ) {
//Do something
}
见:
isset()
对于对应于NULL
值的数组键不返回TRUE
,而array\u key\u exists()
返回
为了扩展Mantas的优秀答案,该答案描述了代码的行为差异:
- 如果要确定该键是否存在于数组中,无论它是否包含值,请使用
- 如果要确定键是否存在于数组中,并且中是否有意义的值,请使用。请注意,
将为isset
值返回falseNULL
$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”的键仍然可以作为键包含在for-each循环中,如中所示
foreach( $array as $key => value )
在我看来,如果你一定要深入使用
数组
我建议使用一些有用的数组函数
就像。另外,创建数组函数是因为数组和易用性是最好的选择,例如检查变量是否存在。或者还有更多的函数可供数组使用
但归根结底,这将真正取决于你想要什么样的结果,或者你想要一个array()
带NULL
。还要注意,isset()比array\u key\u exists()要快得多参见@Patrick,