PHP foreach比较问题

PHP foreach比较问题,php,foreach,Php,Foreach,在下面的代码中,每当$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": 19

在下面的代码中,每当$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(这就是将字符串转换为int的工作原理)。因此,当您比较
0=='acc name not found'
时,您实际上是在比较
0==0

的可能重复项