转:http://home.phpchina.com/space.php?uid=108724&do=blog&id=54899
PHP 是类型宽松的语言,这意味着会 将布尔值 false 和整型值 0 视为相同(甚至 c 也把 0 和 false 视为等价)。可以使用一下脚本来确定 0 与布尔值?false 的等价性:
?
<?php
?$test_var = 0;
?if($test_var == false){
??echo "yes";
?}else{
??echo "no";
?}
?>?
?$test_var = 0;
?if($test_var == false){
??echo "yes";
?}else{
??echo "no";
?}
?>?
?
输出:yes
?
_________________________________________________________________________________
?
<?php
?$test_var = 0;
?if($test_var !== false){
??echo "yes";
?}else{
??echo "no";
?}
?>
?$test_var = 0;
?if($test_var !== false){
??echo "yes";
?}else{
??echo "no";
?}
?>
?
输出:yes
?
_________________________________________________________________
?
问题来了,布尔值 false 和整型值 0 明显是不同的。
?
?
PHP 有一个 gettype() 函数,得到变量的类型。可以使用 === 运算符(看好了,有三个等号)。和 == 运算符 的区别在于该运算符同时比较数据的值和类型。
?
当终止条件中涉及不同的变量类型时,通过使用?===和?!==运算符进行强类型检查是很重要的。
?