PHP - 从Json获取数组元素

时间:2015-06-11 12:30:29

标签: php arrays json

我在这里使用JSON:http://steamcommunity.com/id/mitch8910/inventory/json/730/2/

我正试图获得它的tags[{"name":""}]部分。例如,我想要'容器',来自'“name”:“Container”'

这是我的代码:

    $data = file_get_contents('http://steamcommunity.com/id/mitch8910/inventory/json/730/2/');
    $json = json_decode($data);

            foreach ($json->rgDescriptions as $mydata)
    {
         echo $mydata->tags[1];
    }

tags[]是一个数组,虽然我做了tags[1],但我并没有想要'1'元素,因为“name”的位置可能会在数组中针对不同元素而改变,I只是做了这个测试,但我收到了一个错误。我尝试了多种方法来处理多个错误,这就是我没有发布所有错误代码的原因。

2 个答案:

答案 0 :(得分:1)

我更新了整个答案:

$json = json_decode($data, true);
if (isset($json['rgDescriptions']) && is_array($json['rgDescriptions'])){
    foreach ($json['rgDescriptions'] as $array_no => $value) {
        if (isset($json['rgDescriptions'][$array_no]['tags'])){
            echo "{$array_no}::::";
            foreach ($json['rgDescriptions'][$array_no]['tags'] as $k => $value) {
                if (isset($json['rgDescriptions'][$array_no]['tags'][$k]['name'])){
                    echo "{$json['rgDescriptions'][$array_no]['tags'][$k]['name']},";
                }
            }
        echo "<br />";

        }
    }
}

答案 1 :(得分:1)

最简单的方法是进行额外的循环以获取所有名称元素:

$data = file_get_contents('http://steamcommunity.com/id/mitch8910/inventory/json/730/2/');

$json = json_decode($data);

foreach ($json->rgDescriptions as $mydata)
{
    foreach($mydata->tags as $tag) {
        echo $tag->name;
    }
}

或获取每个标签组的名字:

foreach ($json->rgDescriptions as $mydata)
{
    echo $mydata->tags[0]->name;
}