我在玩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 ?
答案 0 :(得分:1)
一个字符串&#39; == 0 也评估为true,因为转换了任何字符串 与整数比较时为整数。如果PHP无法正常运行 转换字符串然后它被评估为0.所以0等于0, 这相当于真实。
另外,在the official PHP documentation:
要将值显式转换为整数,请使用(int)或 (整数)演员。 然而,在大多数情况下,不需要演员表,因为 如果运算符,函数或者,值将自动转换 控制结构需要一个整数参数。