【问题标题】:How to access JSON object using PHP如何使用 PHP 访问 JSON 对象
【发布时间】:2018-10-28 12:23:08
【问题描述】:

我有 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);

我得到了我想要的输出。但是,如果我尝试在 results 对象中获取所有 city_idcity_name,请使用此代码

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

我收到了这个错误

消息:试图获取非对象的属性“city_name”

如何解决?

【问题讨论】:

    标签: php json codeigniter


    【解决方案1】:

    您可以对所有城市名称使用循环。 例如:

    foreach ($data->rajaongkir->results as $v) {
       echo $v->city_name."\n";
    }
    

    【讨论】:

    • 我怎样才能得到 JSON 的第一个元素?我尝试 $v->city_name[0] 出错了。
    • 如果你使用循环,它会为结果中的每个元素运行。如果您只想在第一个对象中到达 city_name,您可以试试这个。 echo $data-&gt;rajaongkir-&gt;results[0]-&gt;city_name;
    【解决方案2】:

    请尝试以下方法:

    $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 转换为数组 [of arrays]。
    • array_column() 函数可用于从二维数组中提取特定键值的一维数组。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2012-02-28
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      相关资源
      最近更新 更多