逻辑布尔否定运算符优先级和关联
Logical Boolean Negation Operator Precedence and Association
这是我关于 Whosebug 的第一个问题,因此我想它 以前曾在这里被问过 ,但我在搜索栏中输入的所有内容都会给我不同的问题。 (或者有时根本 "no" 结果!)
我在 w3Schools 上学习,但是我看到这个看似简单的代码片段却激起了一小部分问题:
代码本质上说:
if(! test === FALSE)
display("test successful!");
else
display("test failed...")
"test" 在这种特殊情况下 returns 成功时为字符串,失败时为(布尔值)FALSE。
以下是我内心深处的疑问。
至于 conditional/if 语句开头的感叹号(又名 "Logical NOT" 又名 "Negation Operator"),是:
A) 应用于括号内的整个语句?,或
B) 仅关联到 "test"?
注意:在这种情况下,否定运算符的结合性可能不会改变结果,但它的结合性在以下情况下很重要:(!FALSE || TRUE),是吗?
我了解否定运算符如何处理布尔值,但否定运算符在面对 (PHP) 字符串时如何表现?
A) 如果字符串恰好是像 "true" 或“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()?
这是我关于 Whosebug 的第一个问题,因此我想它 以前曾在这里被问过 ,但我在搜索栏中输入的所有内容都会给我不同的问题。 (或者有时根本 "no" 结果!)
我在 w3Schools 上学习,但是我看到这个看似简单的代码片段却激起了一小部分问题:
代码本质上说:
if(! test === FALSE)
display("test successful!");
else
display("test failed...")
"test" 在这种特殊情况下 returns 成功时为字符串,失败时为(布尔值)FALSE。
以下是我内心深处的疑问。
至于 conditional/if 语句开头的感叹号(又名 "Logical NOT" 又名 "Negation Operator"),是:
A) 应用于括号内的整个语句?,或
B) 仅关联到 "test"?
注意:在这种情况下,否定运算符的结合性可能不会改变结果,但它的结合性在以下情况下很重要:(!FALSE || TRUE),是吗?
我了解否定运算符如何处理布尔值,但否定运算符在面对 (PHP) 字符串时如何表现?
A) 如果字符串恰好是像 "true" 或“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()?