我在图书馆里找到了这个,想知道它是否值得这样做? 为什么要引用真假?
$return = true;
if(/* Something went success */)
{
$return &= true;
}
else
{
$return &= false;
}
return $return;
在给定的示例中,使用二进制 anding 是没有意义的。
在更广泛的情况下,这确实是有道理的。
假设您有多个步骤可能导致 true 或 false,这些步骤形成某种过程:
$return = true;
$return = step1();
$return = step2();
return $return;
当step1
或step2
失败时,该过程已失败。
当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
如果$return
为 false
。
否则,无论$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;