PHP - 使用==(等于)和===(相同)的意外行为

ali*_*don 2 php

我的代码中有以下内容:

$mixed = array();
$mixed[0] = "It's a zero!";
$mixed['word'] = "It's a word!";   

foreach ($mixed as $key => $value) {
  if ($key == 'word') {             
    echo $value.'<br />';
  } 
}
Run Code Online (Sandbox Code Playgroud)

以上由于某种原因打印出"它是零!" 和"这是一个字!".我期待它只打印"这是一个字!".这是为什么??我觉得我错过了一些重要的东西.当我===在if语句中使用时,它按预期工作,换句话说它只打印"这是一个字!".我知道相等和相同的运算符之间存在差异,但第一个例子不等于它吗?

Ani*_*han 5

== 在比较之前为您进行类型转换.

当您==使用整数执行时0,它会转换'word'为适当的整数值.

intval()提供纯字符串时返回0,因此0匹配.另一个在字符串上下文中匹配,也匹配.


===确实没有这样的隐式转换,所以它只有在一种情况下返回true,则琴弦实际上是相同的.