确定功能是否设置的正确方法

Correct Way to determine if function is set

我似乎找不到解决我的问题的方法。我试图检查函数的值是否已设置以及它是否做了一些事情但是当我 运行 下面的代码底部的代码抛出错误底部的代码是我希望使用的代码

似乎毫无意义地将函数调用到变量中只是为了查看它是否设置

//working check if set
$wa_passwordreset = WA_FN_Validate_Post($_POST['wa_passwordreset']);
if(isset($wa_passwordreset))
{
echo"do some stuff";
}

//NOT working check if set
if(isset( WA_FN_Validate_Post($_POST['wa_passwordreset']) ))
{
echo"do some other stuff";
}

根据PHP manual

isset — Determine if a variable is set and is not NULL

isset 实际上测试是否设置了 变量 ,而不是函数 return 是否设置了任何值。这就是为什么您的代码不起作用。

im trying to check if the value of a function has been set

函数有值。函数可能 return 值。您无法检查函数是否有值以及是否已设置。

此外,

$wa_passwordreset = WA_FN_Validate_Post($_POST['wa_passwordreset']);
if(isset($wa_passwordreset))
{
    echo "do some stuff";
}

这部分代码将始终 return 为真。这样做的原因是即使 WA_FN_Validate_Post 将 return 一个空字符串,变量 $wa_passwordreset 将被视为已设置并且 isset 检查将始终 return true。为避免这种情况,您应该像这样检查 $_POST

if(isset($_POST['wa_passwordreset']))
{
    $wa_passwordreset = WA_FN_Validate_Post($_POST['wa_passwordreset']);
    echo "do some stuff";
}

或者如果在 WA_FN_Validate_Post 之后维护订单和检查对您来说至关重要,请使用 empty:

$wa_passwordreset = WA_FN_Validate_Post($_POST['wa_passwordreset']);
if(isset($wa_passwordreset) && !empty($wa_passwordreset)) // be extra paranoid!
{
    echo "do some stuff";
}