对于此代码:
<?php
$data = array('0' => 'A_VALUE');
foreach ($data as $key => $value) {
if ($key == "Something to match the key on") {
print_r($key);
print_r('key matches');
}
}
我得到了这个输出
0键匹配
此处的在线示例:http://3v4l.org/dKOWq#v431
我不能为我的生活弄清楚我为什么要这样做。比较应该明确地返回FALSE。
有人可以向我解释一下吗?
答案 0 :(得分:7)
有人可以向我解释一下吗?
由于您使用的是==
,因此PHP会将0
(int)与Something to match the key on
(字符串)进行比较。双方都被投射到int
。因此Something to match the key on
成为0
。 0 == 0
是true
。
使用strict equality或明确投射。
例如:
if ((string)$key == (string)"Something to match the key on") {
// code
}
答案 1 :(得分:1)
使用===检查类型和值的相等性,以避免混淆
答案 2 :(得分:1)
如有疑问,请查看type comparison表。本页介绍了PHP如何计算每种可能的比较类型。
答案 3 :(得分:0)
“===”用于检查“数据类型”
使用此代码进行比较
<?php
$data = array('0' => 'A_VALUE');
foreach ($data as $key => $value) {
if ($key === "Something to match the key on") {
print_r($key);
print_r('key matches');
}
}
答案 4 :(得分:0)
始终尝试使用===进行相等,这总能为您提供正确的结果。