从PHP中获取JSON数据

时间:2017-06-13 10:41:39

标签: php arrays json

我试图从这个JSON格式中获取数据,以便能够在屏幕上显示问题,我不知道如何能够这样做,因为我尝试了多种方式,例如:

$stats = json_decode($result);
// var_dump($stats);
echo $stats->elo;

没有任何工作我不确定如何获取由于[]的数据,因为我以前从未使用过这个。如下所示,我需要能够进入的一小部分数据。

[{"_id":{"championId":51,"role":"DUO_CARRY"},"elo":"BRONZE","patch":"7.11","championId":51,"positions":{"deaths":3,"winRates":6,"minionsKilled":2,"previousOverallPerformanceScore":6}}]

提前致谢

5 个答案:

答案 0 :(得分:1)

处理JSON时有一个简单的经验法则。首先解码并使用print_r()进行打印,以便轻松查看其结构

$s = '[{"_id":{"championId":51,"role":"DUO_CARRY"},"elo":"BRONZE","patch":"7.11","championId":51,"positions":{"deaths":3,"winRates":6,"minionsKilled":2,"previousOverallPerformanceScore":6}}]';

$stats = json_decode($s);

print_r($stats);

在这种情况下会向您显示

Array
(
    [0] => stdClass Object
        (
            [_id] => stdClass Object
                (
                    [championId] => 51
                    [role] => DUO_CARRY
                )
            [elo] => BRONZE
            [patch] => 7.11
            [championId] => 51
            [positions] => stdClass Object
                (
                    [deaths] => 3
                    [winRates] => 6
                    [minionsKilled] => 2
                    [previousOverallPerformanceScore] => 6
                )
        )
)

所以现在你知道有一个数组在这种情况下只包含一个对象

所以要显示elo你可以做一个简单的

echo $stats[0]->elo;    // BRONZE

但由于它是一个对象数组,最好假设在某些情况下会有多个统计数据,因此您可以在这样的foreach循环中处理它

foreach ($stats as $stat) {
    echo $stat->elo;
}

答案 1 :(得分:1)

如果你在json中获得了多个数组数据,请使用foreach,如下所示

foreach ($stats as $row) {
    echo $row->elo;
}

如果您只想获得第一条记录,请使用$stats[0]->elo;

答案 2 :(得分:0)

如果我理解正确(你想要在数组中获取数据吗?),请不要知道, 但试试

$stats = json_decode($result,true);
var_dump($stats);

答案 3 :(得分:0)

您的json_decode输出是一个对象数组。因此,您必须首先使用index来访问数组元素,然后使用$array[0]->elo Live demo.

访问对象的属性
$string = '[{"_id":{"championId":51,"role":"DUO_CARRY"},"elo":"BRONZE","patch":"7.11","championId":51,"positions":{"deaths":3,"winRates":6,"minionsKilled":2,"previousOverallPerformanceScore":6}}]';
print_r(json_decode($string)[0]->elo);

答案 4 :(得分:0)

如果你想获得关联数组,你应该使用$stats = json_decode($result, true); var_dump($stats);并且你会得到

array (size=1)
  0 => 
    array (size=5)
      '_id' => 
        array (size=2)
          'championId' => int 51
          'role' => string 'DUO_CARRY' (length=9)
      'elo' => string 'BRONZE' (length=6)
      'patch' => string '7.11' (length=4)
      'championId' => int 51
      'positions' => 
        array (size=4)
          'deaths' => int 3
          'winRates' => int 6
          'minionsKilled' => int 2
          'previousOverallPerformanceScore' => int 6

获取元素获取$stats[0]或循环的第一个数组键。防爆。 $stats[0]['elo']