2

这是我在 StackOverflow 上的第一个问题,因此我想它以前在这里被问过,但是我在搜索栏中输入的所有内容都给了我不同的问题。(或者有时根本“没有”结果!)

我正在 w3Schools 上学习,但我看到了这个看似简单的代码片段,它引发了一小部分问题:

本质上,代码说:

if(! test === FALSE)
  display("test successful!");
else
  display("test failed...")

在这种特殊情况下, “ test ”在成功时返回一个字符串,在失败时返回一个(布尔值)FALSE

以下是我心中激起的问题。

  1. 至于条件/if语句开头的感叹号(又名“逻辑非”又名“否定运算符”)是:

    A) 应用于括号内的整个语句?,或

    B)仅与“测试”相关联?

注意:在这种情况下,否定运算符的关联性可能不会改变结果,但它的关联性在以下情况下会很重要:(!FALSE || TRUE),是吗?

  1. 我了解否定运算符如何在布尔值上工作,但是当面对(PHP)字符串时,否定运算符的行为如何?

    A) 如果字符串恰好是“true”或“0”等棘手的东西,否定运算符的行为是否会改变?

  2. (!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()?

4

1 回答 1

1
  1. 正如您在 PHP中的doc运算符中看到的那样,它们具有不同的优先级。意思是:!适用于$test第一个。

  2. 根据文档,空字符串'''0'将被转换为false,否则true

  3. 这是不一样的。当$test等于空字符串'''0'这两个条件具有不同的行为时。

于 2015-06-02T04:38:21.900 回答