使用PHP的Traverse JSON数组适用于Google Chrome,但不适用于Safari或Firefox

时间:2013-11-14 17:00:29

标签: php json firefox safari facebook-fql

我有一个带有一个数组的JSON对象来自一个名为$ PageFansCountryFql的FQL查询:

{
"data": [
{
  "value": {
    "M.25-34": 3392, 
    "M.35-44": 2601, 
    "M.45-54": 1675, 
    "M.55-64": 863, 
    "M.18-24": 625, 
    "M.65+": 552, 
    "F.25-34": 531, 
    "F.35-44": 328, 
    "F.45-54": 159, 
    "M.13-17": 119, 
    "F.18-24": 104, 
    "F.55-64": 74, 
    "F.65+": 51, 
    "F.13-17": 35, 
    "U.45-54": 8, 
    "U.35-44": 3, 
    "U.25-34": 2, 
    "U.65+": 1
  }
}
]}

我设法遍历每个人使用以下内容:

foreach($PageFansCountryFqlResult[0] as $theKey => $theValue){
        foreach($theValue as $theKey2 => $theValue2){
                echo("The key2: " . $theKey2 . " The value2: " . $theValue2 . "<BR>");
        }// 2 level
}// 1 level

我稍后会有其他FQL查询。所有这些都在同一个php文件中。所有查询都返回相同的数组(或至少是相同形式的内部数组),因此我使用相同的foreach公式。

问题是,此代码在Google Chrome上正常运行。但是,我已经在Safari和Firefox上测试了它,并且我只在此查询的foreach上获得 php undefined offset 0 错误

也就是说,就像我说的那样,同一个php文件上的所有其他fql查询都可以工作,除了这个。我使用了验证器,结果证明它通过了W3C验证。我还确保facebook会话正常(或其他查询不会返回任何有价值的东西)。

作为参考,同一个foreach在FQL的以下结果上正常工作。

{
  "data": [
{
  "value": {
    "MX": 2865, 
    "CO": 2384, 
    "BO": 2355, 
    "AR": 1645, 
    "CL": 702, 
    "VE": 312, 
    "PE": 303, 
    "ES": 289, 
    "US": 110, 
    "BR": 18, 
    "IT": 9, 
    "EC": 9, 
    "EG": 8, 
    "CR": 7, 
    "FR": 6, 
    "PR": 6, 
    "ID": 6, 
    "GT": 5, 
    "DO": 5, 
    "PY": 4, 
    "PH": 4, 
    "UY": 4, 
    "GB": 3, 
    "CA": 3, 
    "AE": 3, 
    "TR": 3, 
    "JP": 3, 
    "HN": 3, 
    "RO": 2, 
    "MA": 2, 
    "DZ": 2, 
    "JO": 2, 
    "IN": 2, 
    "PL": 2, 
    "CN": 2, 
    "DE": 2, 
    "RU": 2, 
    "TW": 2, 
    "TN": 2, 
    "IL": 2, 
    "AU": 1, 
    "HK": 1, 
    "KZ": 1, 
    "SA": 1, 
    "PA": 1
  }
}
  ]
}

我错过了什么?有什么想法吗?

谢谢!

**编辑**

原来,我在另一台计算机上测试了它并使用谷歌浏览器。与Firefox和Safari相同的错误(至少是一些一致性)。仅适用于我的笔记本电脑。但是为什么其他具有相同结构的数组工作正常而这个没有呢?

1 个答案:

答案 0 :(得分:0)

我终于解决了它。有时结果集实际上是空的。与json没什么关系。