导航

PHP检查键值是否存在

Posted on 2012-11-07 14:03  eastson  阅读(1016)  评论(1编辑  收藏  举报

今天使用isset()函数检查一个数组中某个键值是否存在,发现一个问题。

$info['page'] = null;

if (isset($info['page'])) {
    // 存在
} else {
    // 不存在
}

代码执行的结果居然是不存在。后来换成array_key_exists()就可以了。

 

因而,对PHP的isset()使用方法有了一些怀疑,下面是一段测试代码:

$info['page'] = null; c('null');
$info['page'] = 0; c('zero');
$info['page'] = false; c('false');

function c($value)
{
    global $info;
    $key = 'page';

    $result = $value . ':';
    $result .= (true === isset($info[$key]) ? '1' : '0');
    $result .= (true === array_key_exists($key, $info) ? '1' : '0');
    $result .= (true === empty($info[$key]) ? '1' : '0');

    echo $result . "\n";
}

exit;

执行结果:

null:011
zero:111
false:111

 

总结:检查数组是否存在某个$key,使用array_key_exists($key, $array);检查对象是否存在某个$key,使用isset($object->$key)。