Получение информации из массива

#php #json

#php #json

Вопрос:

Я пытаюсь получить информацию из этого массива, но только информацию из appid, которая имеет значение «240».

(Я хочу знать «playtime_2weeks» из идентификатора приложения, который имеет «240»)

это мой код

 $link = file_get_contents('http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=' . $key . 'amp;steamid=' . $id . 'amp;format=json');
$myarray = json_decode($link, true);

$info = ($myarray['response']['games'][0]['appid']);
  

Копия массива:

 {
    "response": {
        "game_count": 44,
        "games": [
            {
                "appid": 240,
                "playtime_2weeks": 60,
                "playtime_forever": 25979
            },
            {
                "appid": 300,
                "playtime_forever": 271
            },
            {
                "appid": 320,
                "playtime_forever": 0
            },
            {
                "appid": 340,
                "playtime_forever": 0
            },
            {
                "appid": 4000,
                "playtime_forever": 419
            },
            {
                "appid": 12210,
                "playtime_forever": 6743
            },
            {
                "appid": 17470,
                "playtime_forever": 0
            },
            {
                "appid": 24740,
                "playtime_forever": 0
            },
            {
                "appid": 1250,
                "playtime_forever": 377
            },
            {
                "appid": 35420,
                "playtime_forever": 0
            },
            {
                "appid": 39800,
                "playtime_forever": 0
            },
            {
                "appid": 550,
                "playtime_forever": 171
            },
            {
                "appid": 223530,
                "playtime_forever": 0
            },
            {
                "appid": 8190,
                "playtime_forever": 75
            },
            {
                "appid": 49800,
                "playtime_forever": 4
            },
            {
                "appid": 17410,
                "playtime_forever": 16
            },
            {
                "appid": 9930,
                "playtime_2weeks": 118,
                "playtime_forever": 118
            },
            {
                "appid": 22350,
                "playtime_forever": 241
            },
            {
                "appid": 400,
                "playtime_forever": 1
            },
            {
                "appid": 620,
                "playtime_forever": 124
            },
            {
                "appid": 644,
                "playtime_forever": 0
            },
            {
                "appid": 72200,
                "playtime_forever": 8
            },
            {
                "appid": 44320,
                "playtime_2weeks": 84,
                "playtime_forever": 84
            },
            {
                "appid": 46540,
                "playtime_forever": 0
            },
            {
                "appid": 205790,
                "playtime_forever": 0
            },
            {
                "appid": 108800,
                "playtime_forever": 0
            },
            {
                "appid": 730,
                "playtime_2weeks": 958,
                "playtime_forever": 5998
            },
            {
                "appid": 208500,
                "playtime_2weeks": 18,
                "playtime_forever": 1844
            },
            {
                "appid": 96300,
                "playtime_forever": 4
            },
            {
                "appid": 220240,
                "playtime_forever": 1593
            },
            {
                "appid": 44690,
                "playtime_forever": 1
            },
            {
                "appid": 226700,
                "playtime_forever": 251
            },
            {
                "appid": 43160,
                "playtime_forever": 66
            },
            {
                "appid": 231430,
                "playtime_forever": 709
            },
            {
                "appid": 244850,
                "playtime_forever": 1227
            },
            {
                "appid": 47790,
                "playtime_forever": 0
            },
            {
                "appid": 47830,
                "playtime_forever": 0
            },
            {
                "appid": 232810,
                "playtime_forever": 10
            },
            {
                "appid": 223670,
                "playtime_2weeks": 242,
                "playtime_forever": 867
            },
            {
                "appid": 252490,
                "playtime_2weeks": 5,
                "playtime_forever": 2422
            },
            {
                "appid": 254130,
                "playtime_2weeks": 493,
                "playtime_forever": 493
            },
            {
                "appid": 221100,
                "playtime_2weeks": 17,
                "playtime_forever": 1659
            },
            {
                "appid": 247730,
                "playtime_2weeks": 2,
                "playtime_forever": 2
            },
            {
                "appid": 3050,
                "playtime_forever": 52
            }
        ]

    }
}
  

Комментарии:

1. Очевидно, не только PHP, но и общее программирование. Если вы знали, как написать цикл, вы должны знать, как решить эту проблему.

2. Пожалуйста, скопируйте / вставьте массив.

3. Итак, вы пытаетесь проанализировать объект JSON в PHP? Это та часть, на которой вы застряли?

4. Я застрял на том, что хочу получать информацию только из массива с идентификатором appid «240»

Ответ №1:

Это ответ JSON, а не массив. Сначала вам нужно преобразовать ее в массив, затем найдите нужное вам значение.

 $response = '{
    "response": {
        "game_count": 44,
        "games": [
            {
                "appid": 240,
                "playtime_2weeks": 60,
                "playtime_forever": 25979
            },
            {
                "appid": 300,
                "playtime_forever": 271
            },
            ....
            {
                "appid": 3050,
                "playtime_forever": 52
            }
        ]

    }
}';

$responseArray = json_decode($response, true);
foreach ($responseArray['response']['games'] as $game) {
    if ($game['appid'] == '240') {
        echo "Playtime is: " . $game['playtime_2weeks'];
    }
}
  

или

 array_walk($responseArray['response']['games'], function($game) { 
    if ($game['appid'] == '240') {
        echo "Playtime is: " . $game['playtime_2weeks'];
    }
});