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()的速度稍慢,因为它是函数调用。