Javascript 使用数组内容进行Json解码

Javascript 使用数组内容进行Json解码,javascript,php,json,api,parsing,Javascript,Php,Json,Api,Parsing,我正在培训自己的JSON和PHP,我遇到了一个问题 我将Json解码如下所示: "playerstats": { "steamID": "75068112", "gameName": "ValveTestApp260", "stats": [ { "name": "total_kills", "value": 2314497 }, { "name": "

我正在培训自己的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]


感谢您的支持

您正在寻找一种在阵列上循环的方法。在PHP中,您可以执行以下操作:

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

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

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

}
$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语句获取每个名为的stat的值。

使用foreach并使用if-condition检查名称是否为“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);
    ?>

处理数组中所有对象的另一种方法是使用函数,该函数将另一个函数作为其参数之一。只要有可能,就使用它将迫使您坚持良好的编程实践,因为传入函数不能修改数组之外的值和通过use传入的参数。

replice of?使用foreach$json['playerstats']['stats']作为$row{echo$row['name'];echo$row['value'];}我试过用for-each,它可以工作,但我只想要10个值,每次返回200或它太高:/I我想手动操作。我真的想按名称筛选并返回5names maxexit的值,在达到某个条件后退出foreach{ifi==10{break;}}它会工作吗?因为我不想知道第1个、第2个、第55个、第64个、第121个和第186个的名称和值,但不能使用它们的数字进行过滤,只是它们的名称。对不起,我独自工作,独自训练,所以我没有按学校学习:/谢谢!这项工作做得很好,我学会了做事的方法:祝你有愉快的一天:很高兴帮助你@lucastank你,这项工作!另一个答案是post,我选择了它,但这也帮助了我: