就是这样:
$arr_val = array(0,1,'0','1');
foreach ($arr_val as $key){
echo ($key == "TEST")?"EQUALLED":"NOT EQUALLED"."<br>";
}
Run Code Online (Sandbox Code Playgroud)
0 == "TEST" 打印"EQUALED"1 == "TEST" 打印"不等于"'0' =="TEST" 打印"不等于"'1' =="TEST" 打印"不等于"当我说它打印值"SELECTED".但为什么上面的第一个案例打印等于.对此有什么想法吗?这将如何等于.我们知道要做的比较修复
(===) operator.但我想知道原因(0=="TEST")是真的.
当您为PHP的==运算符提供数字和字符串操作数的混合时,PHP将尝试将字符串转换为匹配的数字类型,这是它称为" 类型杂耍 " 的过程的一部分.在这种情况下,字符串"TEST"将转换为整数,0因此您的测试等效于0 == 0true.
PHP提供===运算符,用于测试两个操作数的值和类型是否相等.因此,尽管0 == "TEST"将evaulate到true,0 === "TEST"不会,也不会0 === "0"或0 === 0.0.
请注意,当PHP将字符串转换为数字时,它会尝试解析字符串以获取有效数字.有关intval如何执行此操作的详细信息,请参阅.如果你已经写过了0 == "1TEST",那么这个表达式就会被证实0 == 1,或者false.
在第二个示例中,1 == "TEST"字符串"TEST"再次转换为结果1 == 0,即false.
您的最后两个示例使用字符串比较.没有涉及转换,结果是不言自明的.
PHP提供了不同类型的变量如何比较相等的全面细分.