数値にもなる可能性のある文字列が与えられた変数がある場合、次のようになります。
$a = "1";
本当に1に等しいかどうかを確認したい場合、機能的な違いはありますか
if((int)$a == 1) {
whatever();
}
と
if($a == "1") {
whatever();
}
ここでは PHP について考えていますが、他の言語についての回答も歓迎します。
数値にもなる可能性のある文字列が与えられた変数がある場合、次のようになります。
$a = "1";
本当に1に等しいかどうかを確認したい場合、機能的な違いはありますか
if((int)$a == 1) {
whatever();
}
と
if($a == "1") {
whatever();
}
ここでは PHP について考えていますが、他の言語についての回答も歓迎します。
あなたの質問は他の言語についても尋ねているため、より一般的な情報を探している可能性があります。その場合、トリプルイコールを忘れないでください。これは本当に何かに等しいです。
$a = "1";
if ($a===1) {
// never gonna happen
}
$b = 1;
if ($b === 1) {
// yep you're a number and you're equal to 1
}
$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();
}
最初のケースでは変換してから比較する必要がありますが、2 番目のケースでは値のみを比較します。その意味では、不要な操作を回避するため、2 番目のソリューションの方が優れているように思えます。$a
また、int にキャストできない可能性があるため、2 番目のバージョンの方が安全です。