-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,
},

等々。

これらのアイテムの 1 つのキルを取得したいです。つまり、「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
<?

$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 に答える
2
$mainweaponstats = $decode['data']['mainWeaponStats'];

これはオブジェクトの配列です ( に渡し,trueたので配列ですjson_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 に答える