0

这是代码

$a = 'Rs 15.25';
if ( $a != '' && $a! = 0 ) {
    echo "Inside If";
} else {
    echo "Outside If";
}

实际上我想打印“Inside If”,这就是为什么我放 $a='Some String Value'。但它总是打印“Outside If”。然后我将代码更改为

$a = 'Rs 15.25';
if ( $a != '' && $a != '0' ) {
    echo "Inside If";
} else {
    echo "Outside If";
}

我刚刚将单引号添加到 0。然后我得到了我想要的确切输出。但我不明白为什么会这样。所以请帮我解决这个问题。

4

3 回答 3

1

PHP 进行弱类型比较,即在进行实际比较之前将两个操作数转换为相同类型。

如果其中一个操作数是数字,则另一个也将转换为数字。如果第二个操作数是一个字符串并且不包含数字,它会被默默地转换为 number 0

为避免整个问题,请使用带运算符的字符串类型检查!=====用于相等)。

if($a !== '' && $a !== 0) {
    echo "Inside If";
} else {
    echo "Outside If";
}
于 2013-09-12T07:07:32.050 回答
-1

首先,当您在 if 语句上有多个条件时,您应该始终将每个条件括在括号内

因此,您应该做的第一件事是将代码更改为

     $a='Rs 15.25';
    if(($a!='') && ($a!='0'))
    {
         echo "Inside If";
    }else
    {
         echo "Outside If";
    }
于 2013-09-12T07:11:40.933 回答
-1

在 PHP 中 0 = 假,1 = 真。
if($a != 0) -> if($a != FALSE)
if $a = 'Rs 15.25', $a != false 并且 $a 不是空的,那么你有 echo "Outside If";

于 2013-09-12T07:12:27.893 回答