PHP 运算符(! $a 与 false === $a)

tfo*_*ont 4 php coding-style operators logical-operators

有什么区别,特别是在 PHP 方面?从逻辑上讲,它们是相同的(或者看起来是相同的),但是其中一个比另一个有什么优势吗?包括微基准测试(如果有任何差异)。

示例代码:

$a = fc();

// Example 1
if (!$a) echo "Ex. 1";

// Example 2
if (false === $a) echo "Ex. 2";

// Example 3
if (true !== $a) echo "Ex. 3";

function fc()
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*iel 5

只需将结果值(布尔值或非布尔值)从 true 反转为 false 或将 false 反转为 true

例子:

if (!file_exists('/path/file.jpg')) {
    // if file NOT exists
}
Run Code Online (Sandbox Code Playgroud)

=== 假(或真)

比较的值必须是布尔值false 或 true

例子:

$name = 'Patrick Maciel';

if ($name === true) {
  // not is, because "Patrick Maciel" is a String
}
Run Code Online (Sandbox Code Playgroud)

但如果你这样做

if ($name == true) {
  // it is! Because $name is not null 
  // and the value is not 'false': $name = false;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该运算符仅用于检查:

$connection = $this->database_connection_up();
if ($connection === true) {
  echo 'connected to database';
} else {
  echo 'error in connection';
}

$valid_credit_card = $this->validate_credit_card($information);
if ($valid_credit_card === false) {
  echo 'Your credit card information is invalid'
}
Run Code Online (Sandbox Code Playgroud)

!== true(或 false)

这是同一件事。仅与 相反===,即:该值不能是 a boolean true or false


对不起我的英语不好。