这个PHP代码是不是有一些价值



我在图书馆里找到了这个,想知道它是否值得这样做? 为什么要引用真假?

$return = true;
if(/* Something went success */)
{
    $return &= true;
}
else
{
    $return &= false;
}
return $return;

在给定的示例中,使用二进制 anding 是没有意义的。

在更广泛的情况下,这确实是有道理的。

假设您有多个步骤可能导致 true 或 false,这些步骤形成某种过程:

$return = true;
$return = step1();
$return = step2();
return $return;

step1step2失败时,该过程已失败。

step1返回 false 时,您的进程已失败,但您仍然执行step2但是,如果 step2() 返回 true,那么即使前面的步骤失败,您的整个过程也会突然返回 true。

通过二进制和 ing 结果,您可以确保一旦失败$return将保持失败状态

true & true = true
true & false = false
false & false = false

例如

$return = true;
$return &= step1();
$return &= step2();
return $return;

这在将一组验证器应用于数据的场景中并不少见,并且希望如果一个验证器未能继续前进而不提前退出。可能用于指示哪个验证器失败等。

 $return &= true;

 $return = $return & true;

true & true   // 1
false & true  // 0
true & false  // 0
false & false //0

代码实际上想要做这样的事情:

如果Something went success,则返回 true 如果$return为 true,则返回 false 如果$returnfalse

否则,无论$return是否false返回.

但它返回0/1而不是true/false.

如果你想返回实际true/false,你必须做:

if($condition_of_something)
{
    $return = $return && true;
}
else
{
    $return = false;
}
return $return;

您可以将代码简化为:

return $return && $condition_of_something;

最新更新