php - $foo === TRUE 和 TRUE === $foo 有什么区别

标签 php boolean

我明白,在下面的代码中......

$foo = TRUE;
$bar = 1;

if ($foo === TRUE)
{
    echo 'Foo';
}

if ($bar === TRUE)
{
    echo 'Bar';
}

... 由于类型比较,只会打印 Foo 。

但是,我的问题是关于......

if ($foo === TRUE)
{
    echo 'Foo1';
}
if (TRUE === $foo)
{
    echo 'Foo2';
}

... 因为据我所知,它们是相同的,但我记得在某处读到它们不是。我只是在幻想关于 PHP 的奇怪东西还是真的有区别?

谢谢!

最佳答案

它是一样的 - 只是如果你把 $foo 放在右边,当你只使用一个“=”符号时,你可以避免那个可怕的错误。所以使用“左比较”是一个很好的做法。考虑一下:

//  These 4 lines intended for the same check
//  Notice the subtle differences!

    if("secret_thing" =  $password) {...}   // you get an error but that's it
    if("secret_thing" == $password) {...}   // this is perfect
    if($password == "secret_thing") {...}   // this is acceptable
    if($password =  "secret_thing") {...}   // you're deep in trouble, friend!

//

对于左侧文字,最糟糕的情况是您收到一条错误消息。没什么大不了的。右边有文字(还有一个小错字),窃贼就在你的客厅里。

实际上,这个错字很容易犯,例如,如果您使用 Pascal/Delphi/Lazarus,您使用 ':=' 进行赋值,而简单的 '=' 表示比较。当你这样做时没有警报; PHP 会认为他了解你。

TLDR:这是一种保障措施。

旁注:您还可以使用比较函数来提高可读性。但这需要一些额外的微秒,因此在高性能情况下,只需坚持使用旧的“==”/“===”符号即可。

关于php - $foo === TRUE 和 TRUE === $foo 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570331/

相关文章:

PHP 读取文件();和 JavaScript

c - C中的 boolean 表达式

java - if else 语句使用 boolean 运算符返回 null

PHP base64 编码不会被 Android 解码

php - 如何将 PHP-FPM 与别名目录一起使用

php - 当 Doctrine 不允许我将复合主键与另一个实体的外键关联时,如何对 ER 图进行建模?

php - 将 json 字典数组从 swift 3 发送到 php

java - token ">="出现语法错误,删除此 token

objective-c - 通过 arraycontroller 获取选中的复选框列表

c# - 如果 bool 为真则返回 int