-1

PHPでこれが発生する理由を誰でも理解できます(v5.4を使用しています):

$value = 0;
$existing_value = "Unknown";

if ($value == $existing_value) {
    echo "$value == $existing_value";
} else {
    echo "$value != $existing_value";
}

これは次のように出力されます0 == Unknown

興味深いことに、$value = "0"(つまり、文字列として設定すると) false と評価されます。

これは既知の動作ですか? これに関するドキュメントで何かを見逃していませんか? これをデバッグすると、今日は頭がおかしくなりました!

事前にご協力いただきありがとうございます...

4

3 に答える 3

4

これは、PHP が使用する自動型キャストが原因です。

just を使用して int 値を文字列と比較すると、文字==列は int にキャストされます。この場合、結果は a0になり、true評価になります。

詳細については、それぞれのPHP ドキュメントを参照してください。

これを回避するには、===代わりに==. 前者には型チェックが含まれており、条件が false と評価されます。

$value = 0;
$existing_value = "Unknown";

if ($value === $existing_value) {
    echo "$value === $existing_value";
} else {
    echo "$value !== $existing_value";
}
于 2013-10-31T09:04:04.903 に答える
0

ここで行うように、PHP で数値を文字列と比較すると、文字列は数値に変換されます。文字列 "Unknown" は数値ではないため、数値に変換されます0

演算子との等価性をチェックすると、===型変換は実行されず、false と評価されます。

http://php.net/manual/en/language.operators.comparison.php

于 2013-10-31T09:04:08.317 に答える
0

PHPの比較表を確認する必要があります。特に、厳密な比較 (=== を使用) セクションと比較して、緩やかな比較 (== を使用) セクションを参照してください。

ここに画像の説明を入力

于 2013-10-31T09:04:18.740 に答える