Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数组值是否已设置且为空_Php_Arrays_Isset_Isnull - Fatal编程技术网

Php 检查数组值是否已设置且为空

Php 检查数组值是否已设置且为空,php,arrays,isset,isnull,Php,Arrays,Isset,Isnull,如何检查数组变量 $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 = 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']是否为空,以及$a['b']是否存在而没有“PHP通知:…”错误?

您可以通过引用传递它:

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\u key\u exists
代替
isset()
,因为
isset()
如果变量为
null
,将返回
false
,而
array\u key\u 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';
        }
    }
}

原始代码也没有给出通知。通过引用传递是不必要的。@nickb,当我检查我记得的事情是否正确时,你发布了答案:)@Barmar,是的,我的badIt是我想要的。由于isset在null时返回false,我将这样做:如果(!isset($array[$key])&&is_null($array[$key]),如果$array[$key]为null,则等于true。@BARTKKOSA您的实现有缺陷。它还将为不存在的密钥返回true和notice。您的代码没有收到任何notice警告。@pulzarraider为什么要用
==
替换
is_null()
?因为它更快。@pulzarraider-有证据支持这一说法吗?因为并且似乎与您有很大的分歧,最多可以节省纳秒,使您的编辑成为多余的微优化。是的,这是微优化,但为什么不让您的功能尽可能快呢?Isset()的速度稍慢,因为它是函数调用。