Json使用数组

时间:2017-05-16 09:45:34

标签: javascript php json api parsing

我正在训练自己(JSON和PHP)并且我遇到了问题 我有Json解码看起来像这样:

"playerstats": {
    "steamID": "75068112",
    "gameName": "ValveTestApp260",
    "stats": [
        {
            "name": "total_kills",
            "value": 2314497
        },
        {
            "name": "total_deaths",
            "value": 1811387
        },

要解析为php我做:

$url = 'myrul';
$content = file_get_contents($url);
$json = json_decode($content, true);
echo  $json['playerstats']['stats'][1]['name']

它可以工作,但问题是当我更改id以获取统计数据时,数组的顺序不一样:/ 所以我不能使用[2]或任何其他数字来获取数据。

我在这里发布以了解如何使用每个数组的属性名称(例如'total_kills')而不是[1]来获取统计数据。[2] ..

感谢您的支持

4 个答案:

答案 0 :(得分:1)

使用foreach并使用if条件检查名称'total_kills'是否为真,然后将其存储到新数组中。

    <?php
    $json = json_decode($content, true);
    $new_array =array();
    $i=0;
    foreach($json['playerstats']['stats'] as $row )
    { 

        if($row['name']=='total_kills')
        {

            $new_array[]=array($row['name']=>$row['value']);
        }

        if($i<10)
        {

           break;   
        }
        $i++
    } 

    print_r($new_array);
    ?>

答案 1 :(得分:0)

$url = 'myrul';
$content = file_get_contents($url);
$json = json_decode($content, true);  

foreach($json['playerstats']['stats'] as $row )
{ 

 echo $row['name'];
 echo $row['value']; 

}

答案 2 :(得分:0)

您正在寻找的是循环数组的方法。在PHP中,您可以执行以下操作;

$url = 'myurl';
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach($json["playerstats"]["stats"] as $stat){
    if($stat["name"] == "total_kills"){
        echo "total kills: ".$stat["value"];
    }
    elseif($stat["name"] == "total_deaths"){
        // ...
    }
    // etc... continue to select all parameters you would like
}

这样,您就可以使用if else语句获取value每个统计信息的name

答案 3 :(得分:0)

对数组中的所有对象执行某些操作的另一种方法是使用array_map()函数,该函数将另一个函数作为其参数之一。只要你能使用它就会强迫你遵守良好的编程习惯,因为传入函数不能修改数组之外的值和通过use传入的参数。