这是我在StackOverflow上遇到的第一个问题,因此我想以前曾在这里问过这个问题,但是我在搜索栏中键入的所有内容都给了我不同的问题。 (或者有时根本没有结果!)
我正在w3Schools上学习,但是我看到了这个看似简单的代码片段,激起了一小部分问题:
本质上,代码说:
if(! test === FALSE)
display("test successful!");
else
display("test failed...")
在这种特殊情况下,"测试"在成功时返回字符串,在失败时返回(布尔)FALSE。
这是我内心深思的问题。
至于条件/ if语句开头的感叹号(又称"逻辑非"又称"否定运算符")是:
A)应用于括号内的整个语句吗?
B)仅与"测试"相关?
注意:在这种情况下,否定运算符的关联性可能不会更改结果,但在以下情况下它的关联性很重要:(!FALSE || TRUE),是吗?
我了解Negation运算符对布尔值的工作方式,但是当遇到(PHP)字符串时Negation运算符的行为如何?
A)如果字符串碰巧是"真"或" 0"之类的东西,否定运算符的行为是否会改变?
(!test === FALSE)是否与(test!== FALSE)相同?他们为什么不只使用"!=="?
这里是有问题的实际代码:
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
进一步的PHP问题:在这种情况下,使用filter_var()优于filter_input()有什么优势?为什么w3Schools使用filter_var()而不使用filter_input()?
如您所见,PHP的doc运算符具有不同的优先级。 这意味着:!首先应用于$test。
根据文档,空字符串''或'0'将转换为false,否则将转换为true。
不一样 当$test等于空字符串''或'0'时,这两个条件具有不同的行为。