2015-06-10 105 views
0

所以,我只是做了一些随机测试和了解优先级和基本面||运营商,但我无法理解为什么$ F变化:逻辑运算符和优先级

$f = 0 || 1; 

if ($f === 1){ 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 
$f = 0 or 1; 

if ($f === 0){ 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 

感谢一些见解。

回答

0

这是正常始终计算True。原因在于OR意味着如果其中一个值为True,它将采用这一个。

更新到新的问题:

答案是, “||”具有比更大的优先级“或”

// The result of the expression (false || true) is assigned to $e 
// Acts like: ($e = (false || true)) 
$e = false || true; 

// The constant false is assigned to $f and then true is ignored 
// Acts like: (($f = false) or true) 
$f = false or true; 

您可以在PHP手册网站here我发现这个例子

+0

如何尴尬,由于哈哈。 –

+0

为什么如果($ f === 0或1)仍然评估为真,即使$ f为空? –

+0

我可以看到你是新来的,所以如果这个答案解决您的问题,请把它标记为正确的答案,以帮助有同样的问题 – BlackM

1

你在做什么是一样的:

if (($f = 0) or 1){ 
    // $f is being assigned the value 0, and the condition evaluates 0 or 1, 
    // 1 being equivalent to true, the condition is always true. 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 

if ($f = (0 || 1)){ // which gives $f = true which returns true 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 
如果你想检查是否$ f等于一个值

或其他你会做

if ($f === 0 or $f === 1) 

要知道,在PHP中,默认情况下,除非你做严格比较的INT 1将进行评估,以BOOL TRUE ===或!==

0

问题了解更多在这里:“如果($ F = 0或1){ “:

”=“ 意味着你给变量$ F值0

你应该使用:

  • “==”:检查是否值相等
  • “===”:检查是否左侧变量是相同的权值(值,类型等)