2010-01-14 129 views
-1

全部,PHP - JSON數據解析

我有以下JSON數據。我需要幫助在PHP中編寫一個函數,該函數接受一個categoryid並將屬於它的所有URL返回到一個數組中。

像這樣的東西::

<?php 
function returnCategoryURLs(catId) 
{ 
    //Parse the JSON data here.. 
    return URLArray; 
} 
?> 


{ 
    "jsondata": [ 
     { 
      "categoryid": [ 
       20 
      ], 
      "url": "www.google.com" 
     }, 
     { 
      "categoryid": [ 
       20 
      ], 
      "url": "www.yahoo.com" 
     }, 
     { 
      "categoryid": [ 
       30 
      ], 
      "url": "www.cnn.com" 
     }, 
     { 
      "categoryid": [ 
       30 
      ], 
      "url": "www.time.com" 
     }, 
     { 
      "categoryid": [ 
       5, 
       6, 
       30 
      ], 
      "url": "www.microsoft.com" 
     }, 
     { 
      "categoryid": [ 
       30 
      ], 
      "url": "www.freshmeat.com" 
     } 
    ] 
} 

感謝

回答

6

什麼是這樣的:


您第一次使用json_decode,這是PHP的內置功能來解碼JSON數據:

$json = '{ 
    ... 
}'; 
$data = json_decode($json); 

在這裏,你可以看到什麼PHP的數據類型(即對象,數組,...)解碼的JSON字符串給你,例如使用,例如:

var_dump($data); 


,然後,你遍歷所有的數據項,每個元素的categoryid搜索如果$catId您正在搜索的列表 - in_array幫助這樣做:

$catId = 30; 
$urls = array(); 
foreach ($data->jsondata as $d) { 
    if (in_array($catId, $d->categoryid)) { 
     $urls[] = $d->url; 
    } 
} 

而且,每次找到一個匹配,添加url到一個數組...


這意味着,在循環結束時,你有URL列表:

var_dump($urls); 

給你,在這個例子:

array 
    0 => string 'www.cnn.com' (length=11) 
    1 => string 'www.time.com' (length=12) 
    2 => string 'www.microsoft.com' (length=17) 
    3 => string 'www.freshmeat.com' (length=17) 


給你據此構建 - 不應該有多少東西需要做;-)