所有,
我有以下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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
谢谢
这样的事情怎么样:
你首先使用json_decode,这是php的内置函数来解码JSON数据:
$json = '{
...
}';
$data = json_decode($json);
Run Code Online (Sandbox Code Playgroud)
在这里,你可以看到什么数据的PHP样(即对象,数组,...)的JSON字符串解码送给你,使用,例如:
var_dump($data);
Run Code Online (Sandbox Code Playgroud)
而且,然后,你遍历所有的数据项,搜索中的每个元素的categoryid,如果$catId您正在寻找在列表中- in_array帮助这样做:
$catId = 30;
$urls = array();
foreach ($data->jsondata as $d) {
if (in_array($catId, $d->categoryid)) {
$urls[] = $d->url;
}
}
Run Code Online (Sandbox Code Playgroud)
而且,每次找到匹配项时,url都要添加到数组中......
这意味着,在循环结束时,您拥有URL列表:
var_dump($urls);
Run Code Online (Sandbox Code Playgroud)
在这个例子中给你:
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)
Run Code Online (Sandbox Code Playgroud)
由你来构建 - 不应该有很多事要做;-)
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |