var_dump(0 ==' all'); //为什么是真的

时间:2014-12-30 10:41:21

标签: php

我不明白下面的输出。在布尔部分的php.net手册中找到以下表达式。

<?php

    var_dump(0 == 'all');//   IS bool(true)
    var_dump((string)0 == 'all');  //IS bool(false)
    var_dump(0 === 'all'); // //IS bool(false)

?>

1 个答案:

答案 0 :(得分:8)

如果将整数与字符串进行比较,则每个字符串都会转换为数字,因此:

(0 == 'all') -> (0 == 0) -> true

当比较为===!==时,类型转换不会发生,因为这还包括类型的比较:

(0 === 'all') -> (integer == string) -> false

您编写的第二行代码强制将整数值视为字符串,因此不会发生数值转换。