【问题标题】:How to access JSON decoded array in PHP如何在 PHP 中访问 JSON 解码数组
【发布时间】:2013-02-09 05:45:11
【问题描述】:

我从javascriptPHP 返回了一个JSON 数据类型的数组,我使用json_decode($data, true) 将其转换为关联数组,但是当我尝试使用关联index 使用它时,我得到错误"Undefined index" 返回的数据是这样的

array(14) { [0]=> array(4) { ["id"]=> string(3) "597" ["c_name"]=> string(4) "John" ["next_of_kin"]=> string(10) "5874594793" ["seat_no"]=> string(1) "4" } 
[1]=> array(4) { ["id"]=> string(3) "599" ["c_name"]=> string(6) "George" ["next_of_kin"]=> string(7) "6544539" ["seat_no"]=> string(1) "2" } 
[2]=> array(4) { ["id"]=> string(3) "601" ["c_name"]=> string(5) "Emeka" ["next_of_kin"]=> string(10) "5457394839" ["seat_no"]=> string(1) "9" } 
[3]=> array(4) { ["id"]=> string(3) "603" ["c_name"]=> string(8) "Chijioke" ["next_of_kin"]=> string(9) "653487309" ["seat_no"]=> string(1) "1" }  

请问,我如何访问PHP 中的此类数组?感谢您的任何建议。

【问题讨论】:

  • 您可以像访问任何其他数组一样访问它,因为它就是一个数组。它来自哪里并不重要。如果出现错误,则表示您尝试访问的密钥不存在。因此,请仔细检查您要访问的密钥是否存在。如果您不熟悉 PHP 中的数组,请查看文档:php.net/manual/en/language.types.array.php
  • 你能在你试图访问元素的地方添加代码吗? (并清理数组,使其更易于阅读)

标签: php json


【解决方案1】:

这可能会对您有所帮助!

$latlng='{"lat":29.5345741,"lng":75.0342196}';
$latlng=json_decode($latlng,TRUE); // array
echo "Lat=".$latlng['lat'];
echo '<br/>';
echo "Lng=".$latlng['lng'];
echo '<br/>';



$latlng2='{"lat":29.5345741,"lng":75.0342196}';
$latlng2=json_decode($latlng2); // object
echo "Lat=".$latlng2->lat;
echo '<br/>';
echo "Lng=".$latlng2->lng;
echo '<br/>';

【讨论】:

    【解决方案2】:

    当您将 true 作为第二个参数传递给 json_decode 时,在上面的示例中,您可以通过以下方式检索数据:

    <?php
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    
    var_dump(json_decode($json));
    var_dump(json_decode($json, true));
    
    ?>
    

    【讨论】:

      【解决方案3】:

      当你想循环成一个多维数组时,你可以像这样使用foreach:

      foreach($data as $users){
         foreach($users as $user){
            echo $user['id'].' '.$user['c_name'].' '.$user['seat_no'].'<br/>';
         }
      }
      

      【讨论】:

      • 我将如何解码来自 api.forecast.io/forecast... 的每小时数据?我已经尝试了所有方法但无法获取子数组
      • json结果的格式是什么?您是否使用 javascript 调用该服务?
      【解决方案4】:

      当您将true 作为第二个参数传递给json_decode 时,在上面的示例中,您可以通过以下方式检索数据:

      $myArray = json_decode($data, true);
      echo $myArray[0]['id']; // Fetches the first ID
      echo $myArray[0]['c_name']; // Fetches the first c_name
      // ...
      echo $myArray[2]['id']; // Fetches the third ID
      // etc..
      

      如果您不将 true 作为第二个参数传递给 json_decode,它会将其作为对象返回:

      echo $myArray[0]->id;
      

      【讨论】:

        【解决方案5】:
        $data = json_decode($json, true);
        echo $data[0]["c_name"]; // "John"
        
        
        $data = json_decode($json);
        echo $data[0]->c_name;      // "John"
        

        【讨论】:

          【解决方案6】:
          $data = json_decode(...);
          $firstId = $data[0]["id"];
          $secondSeatNo = $data[1]["seat_no"];
          

          就像这样:)

          【讨论】:

          • 当我尝试以这种方式访问​​时,我收到错误“不能使用 stdClass 类型的对象作为数组”。
          • 那么您实际上并没有将数据解析为关联数组。请参阅我的更新答案。
          猜你喜欢
          • 2019-02-18
          • 2015-02-26
          • 1970-01-01
          • 1970-01-01
          • 2018-03-16
          • 2023-02-04
          • 1970-01-01
          • 1970-01-01
          • 2017-10-28
          相关资源
          最近更新 更多