这是条件 -
if ($file !== "." || $file !== "..")
不能正常工作。
if (($file !== ".") || ($file !== ".."))
也不工作。
if ($file !== ".")
工作得很好。 “ 这真的让我感到前卫。我已经阅读了 php.net 在逻辑运算符(http://php.net/manual/en/language.operators.logical.php)上提供的所有内容,我搜索了一堆糟糕的教程,并且我对运算符优先级进行了三重检查。从各方面来看,任何一种方法都应该有效。
可能是什么原因?
答案 0 :(得分:10)
$file
不应该是.
而且不应该是..
if ($file !== "." && $file !== "..")
答案 1 :(得分:1)
表达式:
if ( $file !== "." || $file !== ".." )
if (($file !== ".") || ($file !== ".."))
对于$file
的每个可能值,将评估为true:
.
条件$file !== ".."
返回true ..
条件$file !== "."
返回true a
条件$file !== "."
和$file !== ".."
都返回true 我想要你:
if ($file !== "." && $file !== "..") {
// $file is neither . nor ..
}
反之亦然:
if ($file === "." || $file === "..") {
// $file is either . nor ..
}
答案 2 :(得分:0)
它是否总是以任何机会落入真实状态? $ file不能等于“。”和“..”所以你的条件永远是真实的。你不需要一个而不是一个或吗?