25

如何检查数组变量

$a = array('a'=>1, 'c'=>null);

已设置并且为空。

function check($array, $key)
{
    if (isset($array[$key])) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        }
        echo $key . ' is set';
    }
}

check($a, 'a');
check($a, 'b');
check($a, 'c');

PHP 中是否有可能具有检查 $a['c'] 是否为 null 以及 $a['b'] 是否存在且没有“PHP Notice: ...”错误的功能?

4

2 回答 2

53

使用array_key_exists()代替isset(),因为如果变量是isset()将返回,而只检查键是否存在于数组中:falsenullarray_key_exists()

function check($array, $key)
{
    if(array_key_exists($key, $array)) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        } else {
            echo $key . ' is set';
        }
    }
}
于 2013-07-20T21:59:57.090 回答
-1

您可以通过引用传递它:

function check(&$array, $key)
{
    if (isset($array[$key])) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        }
        echo $key . ' is set';
    }
}

check($a, 'a');
check($a, 'b');
check($a, 'c');

应该不通知

isset会返回false空值。你可以array_key_exists试试

于 2013-07-20T21:58:27.660 回答