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 は弱い型比較を行います。つまり、実際の比較を行う前に両方のオペランドを同じ型に変換します。

オペランドの 1 つが数値の場合、もう 1 つのオペランドも数値に変換されます。2 番目のオペランドが文字列で数字を含まない場合は、サイレントに数値に変換され0ます。

この問題全体を回避するには、演算子!==( ===for equality ) で文字列型チェックを使用します。

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

PHP では 0 = FALSE、1 = TRUE。
if($a != 0) -> if($a != FALSE)
if $a = 'Rs 15.25', $a != false and $a not empty, then you have echo "Outside If";

于 2013-09-12T07:12:27.893 に答える
-1

まず、if ステートメントに複数の条件がある場合は、常にそれぞれを角かっこで囲む必要があります。

したがって、最初にすべきことは、コードを次のように変更することです

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