3

私は最近、私を困惑させていたバグを抱えていました....実際の例を提供する次の(簡略化された)統計にそれをたどりました

function test_it($team)
{  echo (($team=="a") ? "Yep it is!" : "No Way");
}

だから、実行するtest_it(0);と「そうです!」という結果が得られます。??

ステートメントのロジックは問題ないように見えますが、明らかに正しい結果を得るには、「===....」にする必要がありました。

なぜこれが当てはまるのか、誰でも説明できますか?理由/今後避けるべきことを理解するのに役立ちます。

4

5 に答える 5

0

このリンクを確認してください。

==ゆるい比較を行います。0リンクの表によると、このタイプの(整数) と(文字列)の比較の"something"結果はTRUE.

于 2013-06-27T08:20:25.893 に答える
0

PHP では、数値で始まらない文字列はすべて==0 になります。たとえば、さまざまな比較を行ったサンプルとその結果は次のechoとおりです。

$team = 0;
echo (($team=="a") ? "Yep it is!" : "No Way");    // Yep it is!
echo (($team=="abc") ? "Yep it is!" : "No Way");  // Yep it is!
echo (($team=="a really long string") ? "Yep it is!" : "No Way");  // Yep it is!

どうやら、実際にはバグではありません。詳細については、こちら > https://bugs.php.net/bug.php?id=44999を参照してください。

于 2013-06-27T08:21:07.510 に答える