1

如果我有一个变量,它被赋予一个也可以是数字的字符串,如下所示:

$a = "1";

如果我想检查它是否确实等于 1,那么两者之间是否有任何功能差异

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

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

在这里,我正在考虑 PHP,但欢迎其他语言的答案。

4

3 回答 3

0

在第一种情况下,您需要转换然后比较,而在第二种情况下,您只比较值。从这个意义上说,第二种解决方案似乎更好,因为它避免了不必要的操作。第二个版本也更安全,因为它可能$a无法转换为 int。

于 2013-01-23T17:16:38.100 回答
0
$a = "1"; // $a is a string
$a = 1; // $a is an integer

第一个

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

第二个

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

因为您的问题还询问其他语言,您可能正在寻找更一般的信息,在这种情况下不要忘记三等号。这真的真的等于某事。

$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 回答