【问题标题】:Loop through JSON Request循环 JSON 请求
【发布时间】:2010-06-07 20:11:20
【问题描述】:

全部,

我有以下通过 PHP 中的函数调用而来的 JSON 请求。很明显,每个 URL 可以属于一个或多个 catid。

如何遍历 JSON 请求并创建一个关联数组来指示哪个 catid 中有多少个 URL。

Ex: $arr = array("140"=>3, "141"=>4, "144"=>3)

JSON 请求:

 {
    "header": {
        "action": "loadurls"
    },
    "data": [
        {
            "url": "godaddy.com",
            "catids": [
                141 
            ] 
        },
        {
            "url": "cnn.com",
            "catids": [
                140 
            ] 
        },
        {
            "url": "zdnet.com",
            "catids": [
                140 
            ] 
        },
        {
            "url": "yahoo.com",
            "catids": [
                140,141,144 
            ] 
        },
        {
            "url": "google.com",
            "catids": [
                141,144 
            ] 
        },
        {
            "url": "rediff.com",
            "catids": [
                141 
            ] 
        },
        {
            "url": "apple.com",
            "catids": [
                144 
            ] 
        } 
    ] 
} 

谢谢

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    应该这样做:

    var fooJson = {...jsonsnipped...};
    var catCounts = new Object();
    for(var i=0; i<fooJson.data.length; i++)
    {
        var dataItem = fooJson.data[i];
        for(var j=0; j<dataItem.catids; j++)
        {
            var cat = dataItem.catids[j];
            if (catCounts[cat] >= 0)
            {
                catCounts[cat] = catCounts[cat] + 1;
            }
            else
            {
                catCounts[cat] = 1;
            }
        }
    }
    

    请注意,我使用 Object() 而不是 Array() 来存储计数。您希望通过 catid 进行关联查找,实际上并没有按索引存储有限数量的项目。如果您改用 Array,您将从“Array”的 .length 属性中得到完全错误的结果,因此 Object 在这种情况下更合适。如果您现在需要迭代 catid,只需使用 for(var key in catCounts) 语法即可。

    编辑:这是 javascript 代码,我现在意识到也许你想要 PHP 代码。根据我对 PHP 的记忆,这应该仍然有效,但如果没有,它应该很接近。

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2017-09-26
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多