根据有关逻辑运算符的 php.net 网页:
这:
$e = false || true;
像这样的行为:
$e = (false || true) // If false is true, then $e = false. Otherwise true
这:
$f = false or true;
会像这样:
($f = false) or true; // $f = false is true, as the assignment succeeded
这:
$foo or $foo = 5;
会像这样:
$foo or ($foo = 5) // foo = undefined or foo = 5, so foo = 5
对于最后一个,undefined 基本上等于 false,因此 foo 等于 5。
此外,这里是运算符优先顺序的链接:http ://www.php.net/manual/en/language.operators.precedence.php
更新:
好的,现在让我们进入重点。就像我们都知道使用获取的查询时一样:
while($row = @mysql_fetch_assoc($result))
我们都知道 while 循环只在 上执行true
,因此$row = @mysql_fetch_assoc($result)
返回 true。
与达里克的问题相同。
$foo or $foo = 5;
基本上是:
$foo or ($foo = 5);
基本上是:
$foo = undefined or ($foo = 5); // $foo = 5 actually returns true
这也是
$foo = undefined or true;
正如我之前提到的,undefined = false,因此 $foo = 5(因为这是正确的陈述)。
我希望每个人都能理解。