-1

我这里有点麻烦...

我正在尝试从此处的 json 文件中获取一些值,并且可以在此处对其进行格式化。

json 文件如下所示:

{
"type": "success",
"message": "OK",
"data": {
"mainWeaponStats": [
{
"category": "Machine guns",
"timeEquipped": 3507,
"startedWith": null,
"code": "mgRPK",
"headshots": 18,
"name": "RPK",
"kills": 100,
"deaths": null,
},
{
"category": "Handheld weapons",
"timeEquipped": 5452,
"startedWith": null,
"code": "wahUGL",
"headshots": 1,
"name": "Underslung Launcher",
"kills": 108,
"deaths": null,
},
{
"category": "Sniper rifles",
"timeEquipped": 307,
"startedWith": null,
"code": "srMK11",
"headshots": 0,
"name": "MK11",
"kills": 2,
"deaths": null,
},

等等。

我想抓住其中一件物品的杀戮。意思是我想给出一个像“Underslung Launcher”这样的参数并返回108。在这种情况下,“Underslung Launcher”。我正在寻找这样的代码:

$gamemode = $decode['data']['topStats']['mapMode'];

但如果有人知道更好的方法,请告诉我。由于列表中的项目没有“名称”,与“数据”和“mainWeaponStats”不同,我真的不知道该怎么做。

编辑:这是到目前为止的相关代码:

$weaponstats = "http://battlelog.battlefield.com/bf3/weaponsPopulateStats/" . $bf3id . "/1/";
$content = file_get_contents($weaponstats);
$decode = json_decode($content, true);

$mainweaponstats = $decode['data']['mainWeaponStats'];

如您所见,我很难学习 Json。我正在尝试阅读它,但截至目前,我无法弄清楚这一点。

我真的不知道该怎么做,因为我试图找到的值在同一个组内。

4

2 回答 2

2
$mainweaponstats = $decode['data']['mainWeaponStats'];

这是一个对象数组(数组,因为您传递,truejson_decode)。只需遍历此内容即可找到您想要的内容。

$search = 'Underslung Launcher';
$kills = 0;
foreach($mainweaponstats as $w){
    if($w['name'] === $search){
        $kills = $w['kills'];
        break;
    }
}
echo $kills;
于 2012-08-16T14:15:05.300 回答
2
<?

$name = "Underslung Launcher";

$json = file_get_contents("json.php");
$dec = array();
$dec = json_decode($json,true);

$datas = $dec['data']['mainWeaponStats'];

foreach($datas as $data)
{
    if($data['name']==$name) {
        echo $data['kills'];
        break;
    }
}
?>
于 2012-08-16T14:20:40.657 回答