1

数値にもなる可能性のある文字列が与えられた変数がある場合、次のようになります。

$a = "1";

本当に1に等しいかどうかを確認したい場合、機能的な違いはありますか

if((int)$a == 1) {
    whatever();
}

if($a == "1") {
    whatever();
}

ここでは PHP について考えていますが、他の言語についての回答も歓迎します。

4

3 に答える 3

0

あなたの質問は他の言語についても尋ねているため、より一般的な情報を探している可能性があります。その場合、トリプルイコールを忘れないでください。これは本当に何かに等しいです。

$a = "1";
if ($a===1) {
  // never gonna happen
}
$b = 1;
if ($b === 1) {
  // yep you're a number and you're equal to 1
}
于 2013-01-23T18:06:52.290 に答える
0
$a = "1"; // $a is a string
$a = 1; // $a is an integer

1枚目

if((int)$a == 1) {
 //int == int
    whatever();
}

2つ目

if($a == "1") {
   //string == string
    whatever();
}

しかし、もしそうなら

$a = "1"; // $a is a string

if($a == 1) {
   //string & int
   //here $a will be automatically cast into int by php
    whatever();
}
于 2013-01-23T17:19:06.520 に答える
0

最初のケースでは変換してから比較する必要がありますが、2 番目のケースでは値のみを比較します。その意味では、不要な操作を回避するため、2 番目のソリューションの方が優れているように思えます。$aまた、int にキャストできない可能性があるため、2 番目のバージョンの方が安全です。

于 2013-01-23T17:16:38.100 に答える