【问题标题】:PHP if single or double equalsPHP 如果单或双等于
【发布时间】:2020-12-05 18:10:35
【问题描述】:

为了检查一个字符串是否与另一个字符串匹配,我一直在使用双等号符号。例如

if ($string1==$string2)

这是因为我一直使用的大多数字符串都是字母数字。但是现在我正在尝试用这样的数值做同样的事情:

 $string1 = 10;
 $string2 = 10;

问题是,我是做单等号还是双等号来确保两个字符串 100% 不多不少只是精确匹配

我也这样做:

if ($string1==$string2) 

或者

if ($string1=$string2)

【问题讨论】:

  • 单身=任务;双==松散比较(带类型转换);三重 ===严格比较(数据类型必须匹配)

标签: php if-statement equals


【解决方案1】:

双等号 (==) 可能是您要用于该比较的内容。 (您也可以使用三等号,即 === 进行“严格”比较,这样 "2" === 2 将为假。)

单个等号是一个赋值:它覆盖左侧,然后您的 if 语句将等同于检查最终分配的值(例如右侧的值)。

例如,这将打印 It's not zero! 后跟 foo = 1(如您所料):

$foo = 1;
if ($foo == 0) {
  print("It's zero!");
} else {
  print("It's not zero!");
}
print("foo = " + $foo);

但这将打印It's not zero!,然后是foo = 0(可能不是您所期望的):

$foo = 1;
if ($foo = 0) {
  print("It's zero!");
} else {
  print("It's not zero!");
}
print("foo = " + $foo);

原因是第二种情况,$foo = 0$foo 为 0,然后 if 被评估为 if($foo)。由于 0 是假值,因此运行 else 语句。

【讨论】:

    【解决方案2】:

    相同运算符,===,用于比较两个操作数的值类型。

    等于运算符 == 用于比较两个值。如果both values are equivalent,它将评估为true(即15 == "15"将是true)。

    赋值运算符 = 用于为变量赋值。此运算符不应用于比较值;这不是它的目的。

    现在,为了以各种方式比较字符串,您可能需要查看 strcmp family of functions。它们对于以多种方式比较字符串非常有用。

    【讨论】:

      【解决方案3】:
      $a === $b   TRUE if $a is equal to $b, and they are of the same type.
      

      更多信息:http://www.php.net/manual/en/language.operators.comparison.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 2014-11-09
        • 2012-04-15
        • 1970-01-01
        • 2020-08-11
        • 2011-12-09
        • 2013-04-28
        相关资源
        最近更新 更多