Как получить доступ к объекту JSON с помощью PHP - PullRequest
0 голосов
/ 28 октября 2018

У меня есть REST API, и он выглядит следующим образом:

{
"rajaongkir": {
    "query": {
        "key": "b5231ee43b8ee75764bd6a289c4c5745"
    },
    "status": {
        "code": 200,
        "description": "OK"
    },
    "results": [
        {
            "city_id": "1",
            "province_id": "21",
            "province": "Nanggroe Aceh Darussalam (NAD)",
            "type": "Kabupaten",
            "city_name": "Aceh Barat",
            "postal_code": "23681"
        },
        {
            "city_id": "2",
            "province_id": "21",
            "province": "Nanggroe Aceh Darussalam (NAD)",
            "type": "Kabupaten",
            "city_name": "Aceh Barat Daya",
            "postal_code": "23764"
        }
     ]
  }
}

Я хочу использовать этот API.Я вызываю объект, как показано ниже:

<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

<title>Raja Ongkir</title>
</head>
<body>
  <h1>Raja Ongkir</h1>
  <?php 
    echo var_dump($data->rajaongkir->results[0]); 
  ?>
</body>
</html>

Если я вызываю первый элемент JSON, используя эту строку

echo var_dump ($ data-> rajaongkir-> results [0]);

ИЛИ

echo var_dump ($ data-> rajaongkir-> results [0] -> city_name);

Iполучил вывод, который я хочу.Но если я попытаюсь получить все city_id или city_name в результатах объекта, используя этот код

echo var_dump ($ data-> rajaongkir-> results-> city_name);

Я получил эту ошибку

Сообщение: пытается получить свойство 'city_name' необъекта

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вы можете использовать цикл для всех названий городов.Например:

foreach ($data->rajaongkir->results as $v) {
   echo $v->city_name."\n";
}
0 голосов
/ 28 октября 2018

Вместо этого попробуйте следующее:

$all_city_names = array_column(json_decode($data->rajaongkir->results, true), 
                               'city_name');

// Display all the city name(s)
var_dump($all_city_names);

Подробности :

  • json_decode(), со вторым параметром, установленным на true, преобразует JSON в массив [массивов].
  • array_column() Функция может быть использована для извлечения одномерного массива значений определенных ключей из двухмассив.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...