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

标签 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 />';
  } 
}

由于某种原因,上面的代码会同时打印“It's a zero!”和“这是一个词!”。我期待它只打印“这是一个词!”。这是为什么??我觉得我错过了一些重要的东西。当我在 if 语句中使用 === 时,它按预期工作,换句话说,它只打印“It's a word!”。我知道相等运算符和相同运算符之间存在差异,但第一个示例不相等,是吗?

最佳答案

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

当你做了 ==用一个整数 0 , 它转换了 'word'转化为适当的整数值

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


=== 没有这样的隐式转换,因此它仅在一种情况下返回 true,即字符串实际上相同。

关于PHP - 使用 ==(相等)和 ===(相同)的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365878/

相关文章:

php - 警告 : mysql_real_escape_string() [function. mysql-real-escape-string]:拒绝用户访问

php - 当我向 foreach 循环添加中断时出错

页面加载时未调用 JavaScript 函数

php - utf8、php 和 mysql 的问题

javascript - 如何在我的 Moodle 页面上包含外部 JavaScript?

php - 在 JSON 响应中转义文本的正确方法是什么?

php - 在输入字段中创建一个跨度,例如 Facebook 消息

php - 将 JavaScript 私钥转换为可在 PHP 中使用的私钥

java - 将图像从 Android 设备发送到服务器进行处理并将结果发回的最佳方式是什么?

PHP 表单在 mySQL 中不显示任何内容