@lucky_e3

Как правильно обратится к JSON на PHP?

Приходит следующий ответ от API:
{
    "status": "ok",
    "meta": {
        "count": 1
    },
    "data": {
        "37677272": [
            {
                "all": {
                    "spotted": 75,
                    "avg_damage_blocked": 65.24,
                    "capture_points": 100,
                    "explosion_hits": 0,
                    "piercings": 299,
                    "xp": 32706,
                    "survived_battles": 11,
                    "dropped_capture_points": 50,
                    "damage_dealt": 37598,
                    "hits_percents": 63,
                    "draws": 0,
                    "battles": 41,
                    "damage_received": 27929,
                    "frags": 56,
                    "direct_hits_received": 189,
                    "hits": 404,
                    "battle_avg_xp": 798,
                    "wins": 20,
                    "losses": 21,
                    "piercings_received": 157,
                    "no_damage_direct_hits_received": 32,
                    "shots": 641,
                    "explosion_hits_received": 4,
                    "tanking_factor": 0.12
                }
            }
        ]
    }
}


Требуется получить spotted в объекте all.
Название массива 37677272 — динамично, оно хранится в переменной.

Моя попытка, описанная ниже, не удалась (из строки $acid берется 0 элемент, поэтому и не находит нужное название). Возможно я делаю глупые ошибки, увы, только начал познавать PHP и JSON.
...
$acid = (string)$a_ui;
$obj1->data->$acid[0]->all->spotted;


Каким образом решить проблему?
  • Вопрос задан
  • 1065 просмотров
Решения вопроса 1
@synapse_people
если нужно именно к объекту обратится, то можно написать
$obj1->data->{$acid[0]}->all->spotted;
так обработает:$obj1->data->{'37677272'}->all->spotted; -последний вариант тоже рабочий
И этот тоже:
$s = $obj1->{'data'}->{'37677272'}->{'all'}->{'spotted'};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы