比较2个不同的值将返回true

时间:2014-06-20 02:24:10

标签: php

我在玩php时遇到过这个

$test1 = '123abc';
$test2 = 123;

var_dump($test1); echo "<br />";
var_dump($test2); echo "<br />";

$test3 = ($test1 == $test2) ? True : False;
var_dump($test3);

这导致:

string(6) "123abc" 
int(123) 
bool(true)

有人可以解释为什么$ test3出现了吗?

使用&#34; ===&#34;会使那个错误,但这可能是由于比较字符串与int。

另请注意,如果我强制(字符串)$ test2 ,它会给我预期的 false ,并强制(int)$ test1 返回预期的 true ;

这是否意味着$ test3返回true,因为PHP在比较之前自动将$ test1转换为 int

1 个答案:

答案 0 :(得分:1)

查看the details here

  

一个字符串&#39; == 0 也评估为true,因为转换了任何字符串   与整数比较时为整数。如果PHP无法正常运行   转换字符串然后它被评估为0.所以0等于0,   这相当于真实。

另外,在the official PHP documentation

  

要将值显式转换为整数,请使用(int)或   (整数)演员。 然而,在大多数情况下,不需要演员表,因为   如果运算符,函数或者,值将自动转换   控制结构需要一个整数参数。