2013-11-28 41 views
1

为了检查一个字符串是否与另一个字符串匹配,我一直使用双等号注册到现在。例如PHP如果单个或双等于

if ($string1==$string2) 

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

$string1 = 10; 
$string2 = 10; 

问题就是,我做了一个等于或双等于,以确保这两个字符串匹配100%没有多勿少只是精确

这样办:

if ($string1==$string2) 

if ($string1=$string2) 
+3

单'='是__assignment__;双'=='是__loose比较___(带类型转换);三重'==='是__strict比较___(数据类型必须匹配) –

回答

6

双等于(==)可能是您想要用于比较的东西。 (您也可以使用三倍等于===进行'严格'比较,以便"2" === 2将为false。)

等于一个符号是一个赋值:它会覆盖左边,然后您的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语句。

3

相同操作,===,是当你想比较两个操作数的值类型使用。

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

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

现在,以各种方式比较字符串,你可能想看看strcmp family of functions。它们以各种方式比较字符串非常有用。