在下面的代码中,每次$ value为0时,IF情况也为TRUE。 为了解决这个问题,我不得不改变" =="到" ==="。
我能解释一下原因吗?为什么比较0上的特定字符串也变为TRUE。
<?php
date_default_timezone_set('EST'); //time set to GMT base
$json_file = '[
{
"ACCOUNT_ID": -1,
"ACC_NAME": "acc name not found",
"TT4": 1955801736,
"TT7": 0,
"TT8": 0
},
{
"ACCOUNT_ID": 841,
"ACC_NAME": "Appnexus",
"WEEK_REQ": 66306441448,
"TT16": 16570453480,
"TT_NULL": 0,
"ORDER_ID": 1
},
{
"ACCOUNT_ID": 730,
"ACC_NAME": "MediaMath",
"WEEK_REQ": 17816846018,
"WEEK_CLASS_RATE": 87.65,
"TT16": 0,
"TT_NULL": 0,
"ORDER_ID": 1
}
]';
$j = json_decode($json_file);
foreach ($j as $row)
{
foreach($row as $key=>$value)
{
if ($value == 'acc name not found')
{
echo $key . " - " . $value;
echo "<br>";
}
}
}
?>
答案 0 :(得分:0)
当你使用==运算符比较整数(或类整数字符串)时,由于类型juggling,string被转换为整数。没有数字的每个字符串都会变为0(这就是将字符串转换为int的工作原理)。因此,当您比较0 == 'acc name not found'
时,您实际上是在比较0 == 0