如何在PHP中正确解码和浏览JSON数组

时间:2016-04-27 07:46:24

标签: php json

我正在尝试解码以下JSON:

{"urls":{"id":"1","url":"http://www.someUrl.com"}}

问题是代码只有在' urls'

中有多个条目时才有效
$value = json_decode(file_get_contents('php://input'));
foreach($value->urls as $urlField) {
    $url = trim($urlField->url);
    $id = trim($urlField->id);
}

所以

{"urls":{"id":"1","url":"http://www.someUrl.com"}}

未正确解析但

{"urls":[{"id":"1","url":"http://www.someUrl.com"}, {"id":"2","url":"http://www.someUrl2.com"}]}

如果有单个网址的话。输入循环中的$ urlField值是一个字符串,其中包含' http://www.someUrl.com'值。 知道为什么吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

当你的json包含2个或更多数据时,它会创建一个额外的数组,因此它与第一个不同。 现在我在这里做两个条件。

$json = '{"urls":[{"id":"1","url":"http://www.someUrl.com"}, {"id":"2","url":"http://www.someUrl2.com"}]}';

$arr = json_decode($json);

foreach($arr as $key => $urlField){
    if(count($arr->urls) > 1){
        foreach($urlField as $key2 => $urlField2){
            echo $urlField[$key2]->id;  //echo $urlField2->id;
            echo $urlField[$key2]->url; //echo $urlField2->url;
        }
    }else{
        echo $urlField->id;
        echo $urlField->url;    
    }   
}

<强>结果:

1
http://www.someUrl.com
2
http://www.someUrl2.com

检查并告诉我它是否适合您。