转换与不同的比较

时间:2013-01-23 17:14:37

标签: php variables comparison

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

$a = "1";

如果我想检查它是否确实等于1,那么

之间是否存在任何功能差异
if((int)$a == 1) {
    whatever();
}

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

我在考虑使用PHP,但欢迎使用其他语言的答案。

3 个答案:

答案 0 :(得分:0)

在第一种情况下,您需要转换然后进行比较,而在第二种情况下,您只需比较值。从这个意义上讲,第二种解决方案看起来更好,因为它避免了不必要另外第二个版本更安全,因为$a可能无法转换为int。

答案 1 :(得分: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();
}

答案 2 :(得分: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
}