PHP - анализ данных JSON - PullRequest
       4

PHP - анализ данных JSON

0 голосов
/ 15 января 2010

All

У меня есть следующие данные 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" 
        } 
    ]
}

Спасибо

Ответы [ 2 ]

6 голосов
/ 15 января 2010

Что-то вроде этого:


Сначала вы используете 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)


До вас, чтобы построить из этого - не должно быть много осталосьделать; -)

6 голосов
/ 15 января 2010

Попробуйте встроенную функцию json_decode .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...