如何在PHP中检查变量是否已设置且为空
这个问题仅供参考 我想知道是否有一种方法可以检查一个变量是否被设置,如果是,检查它是否被设置为null 根据目前的情况,这似乎是不可能的 例如,假设我们有以下代码:如何在PHP中检查变量是否已设置且为空,php,isset,isnull,Php,Isset,Isnull,这个问题仅供参考 我想知道是否有一种方法可以检查一个变量是否被设置,如果是,检查它是否被设置为null 根据目前的情况,这似乎是不可能的 例如,假设我们有以下代码: <?php $x = null; if(isset($x) && is_null($x)){ echo '$x is set to NULL'; }else{ echo '$x was never initialized'; } echo "\n"; if(isset($y) &&
<?php
$x = null;
if(isset($x) && is_null($x)){
echo '$x is set to NULL';
}else{
echo '$x was never initialized';
}
echo "\n";
if(isset($y) && is_null($y)){
echo '$y is set to NULL';
}else{
echo '$y was never initialized';
}
echo "\n";
if(is_null($z)){
echo '$z is set to NULL';
}else{
echo '$z was never initialized';
}
?>
您得到的结果是正确的,因为当您分配
$x=null代码>
这意味着您正在为$x
分配一个值,这就是为什么需要一个条件
if(isset($x)和&is_null($x)){
设置为false
,控制转到else
部分
isset($x)
返回true
但为null($x)
返回false
,因为设置了值(无论值是否为null
),所以和&
返回false,控制转到其他部分
如果是$y
if(isset($y)和&is_null($y)){
$y
未声明。因此isset($y)
为false
,因此控件转到其他部分
为什么您会收到关于$z
的消息,即$z被设置为NULL
,因为您没有checkisset($z)
,默认情况下它是NULL
,这就是为什么为NULL($z)
条件变为true
&意味着IF子句中的两个条件都必须为true,正如您在本文中所看到的
$x=null;
isset($x)返回false,is_null($x)返回true,这样我们可以看到else条件执行
$variablename_to_check_against = "varname";
$vars = get_defined_vars();
if (array_key_exists($variablename_to_check_against, $vars) && is_null($$variablename_to_check_against)) {
echo "$variablename_to_check_against is NULL and exists";
}
get_defined_vars
返回键值对中的局部变量范围(包括超全局变量)
由于array\u key\u exists
在变量为NULL
时也返回true,因此您可以使用它;然后您只需使用is\u NULL
检查变量是否为NULL我正在分配一个值,该值为NULL,这意味着is\u NULL($x)
应返回true以及isset($x)
因为变量已设置且值为空
$x was never initialized
$y was never initialized
$z is set to NULL
$variablename_to_check_against = "varname";
$vars = get_defined_vars();
if (array_key_exists($variablename_to_check_against, $vars) && is_null($$variablename_to_check_against)) {
echo "$variablename_to_check_against is NULL and exists";
}