2010-06-07 3 views
0

Все,Loop via JSON Request

У меня есть следующий запрос JSON, который приходит через вызов функции в PHP. Очевидно, что каждый URL-адрес может принадлежать одному или нескольким категориям.

Как я могу запрограммировать запрос JSON и создать ассоциативный массив, который обозначает, какое число кодов содержит столько 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 
      ] 
     } 
    ] 
} 

Благодаря

ответ

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; 
     } 
    } 
} 

Обратите внимание, что я использовал объект() вместо Array() для хранения подсчеты. Вы хотите ассоциативный поиск по catid, вы на самом деле не храните конечное количество предметов по индексу. Если вы использовали Array вместо этого, вы получите полностью сломанные результаты из свойства .length в «Массив», поэтому в этом случае Object более уместен. Если вам нужно итерации котиков сейчас, просто используйте синтаксис for (var key in catCounts).

EDIT: Это предназначено для кода javascript, теперь я понимаю, что, возможно, вам нужен код PHP. Из того, что я помню о PHP, это должно работать, но если нет, оно должно быть близко.

+0

Это отлично работает .. Спасибо! – Jake