为什么我输出"这是String"而不是"这不是字符串"

时间:2016-06-14 09:18:03

标签: php

Q值。我得到以下代码的输出为"这是字符串"而不是"这不是一个字符串"为什么呢?

<?php
$abc=0;

    if($abc == "str")
    {
        echo "This is string";
    }
    else
    {
        echo "This is not a string";
}
?>

3 个答案:

答案 0 :(得分:3)

最好使用===进行比较,它还会检查比较变量。

if($abc === "str")
{
    echo "This is string";
}
else
{
    echo "This is not a string";
}

这将按预期工作。 有关PHP类型比较表,请参阅here。在那里你看到&#34;松散的比较与==&#34;在...之间0(int)和"php"(字符串)将返回true。这不是人们所期望的。

答案 1 :(得分:1)

根据php.net documentation

  

如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。

使用"str"运算符将它们进行比较时,

0会转换为==。要使代码正常工作,您必须使用===运算符。

  

当比较为===或!==时,不会发生类型转换,因为这涉及比较类型和值。

答案 2 :(得分:-1)

使用<?php $abc=0; if(is_string($abc)) { echo "This is string"; } else { echo "This is not a string"; } ?> 查找变量的类型是否为字符串

{{1}}