<?php
var_dump(0=="a");
var_dump("1"=="01");
switch ("a") {
case 0: //case后面的0不加单引号表示什么?
echo "0";
break;
case "a": //case后的值加双引号又表示什么?
echo "a";
break;
}
?>
输出的结果为什么是bool(true) bool(true) 0
php里有2个等于比较符,== 和 ===
对于前面的等号,会判断并转化为相同的类型后再进行比较,
比如你的代码: 0 == "a",会先把字符串a转化为数值,因为字符串里没有数字,所以"a"转换后就是0, 0==0当然是true了
同理,"1" == "01" 会自动判断有数字,然后把前后2个字符串都转化为数字进行比较,所以也是true。
同样的问题还有: 0 == ""; 0 == false; 这些都是true
而 === 就不会,该比较符必须类型相同,类型不同,直接返回false,
比如 0 === "0" 会返回false
在实际工作中,建议避免使用 ==,统一使用 ===
对于前面的等号,会判断并转化为相同的类型后再进行比较,
比如你的代码: 0 == "a",会先把字符串a转化为数值,因为字符串里没有数字,所以"a"转换后就是0, 0==0当然是true了
同理,"1" == "01" 会自动判断有数字,然后把前后2个字符串都转化为数字进行比较,所以也是true。
同样的问题还有: 0 == ""; 0 == false; 这些都是true
而 === 就不会,该比较符必须类型相同,类型不同,直接返回false,
比如 0 === "0" 会返回false
在实际工作中,建议避免使用 ==,统一使用 ===
温馨提示:答案为网友推荐,仅供参考