【问题标题】:Get only specific key/values from JSON by key names not all通过键名而不是全部从 JSON 中获取特定的键/值
【发布时间】:2017-04-29 00:33:46
【问题描述】:

我有显示多个键值对的 JSON。我想循环并创建一个新数组,其中仅包含我想要的键值对以显示它们。这是我的尝试,当然,我的代码正在重写我的数组 ($new_array),使其只有一个元素。

 //SAMPLE JSON
 [{"PropertyId":"555","FloorplanId":"555","FloorplanName":"Studio","Beds":"0","Baths":"1.00","AvailabilityURL","UnitTypeMapping":".058500"},{"PropertyId":"666","FloorplanId":"666","FloorplanName":"Studio","Beds":"0","Baths":"1.00","AvailabilityURL","UnitTypeMapping":".058500"}]

 //GET ALL JSON FROM URL
 $json = file_get_contents('<URL>');
 $data = json_decode($json);
 // print_r($data); //ALL keys

 //GET JUST THE KEYS I WANT
 $new_array = array("FloorplanName"=>"","Beds"=>"","Baths"=>"");

 // Create new array
 foreach($data as $item) {
   $new_array['FloorplanName'] = $item->{'FloorplanName'};
   $new_array['Beds'] = $item->{'Beds'};
   $new_array['Baths'] = $item->{'Baths'};
 }

 //loop over $new_array
 foreach($new_array as $item) {
   $item->{'FloorplanName'};
   $item->{'Beds'};
   $item->{'Baths'};
 }

【问题讨论】:

    标签: php arrays json multidimensional-array


    【解决方案1】:

    现在,您在 $new_array 上设置关联键,并在每次通过 foreach 循环时覆盖您的数据。相反,您需要向$new_array 添加一个项目(子数组)并将数据分配给子数组。

    而不是这个:

    //GET JUST THE KEYS I WANT
    $new_array = array("FloorplanName"=>"","Beds"=>"","Baths"=>"");
    
    // access property of object in array
     foreach($data as $item) {
       $new_array['FloorplanName'] = $item->{'FloorplanName'};
       $new_array['Beds'] = $item->{'Beds'};
       $new_array['Baths'] = $item->{'Baths'};
     }
    

    你需要

    $new_array = array(); // this array should be empty
    
    // access property of object in array
    foreach($data as $item) {
      $new_array[] = array(
        'FloorplanName' => $item->{'FloorplanName'},
        'Beds' => $item->{'Beds'},
        'Baths' => $item->{'Baths'},
      );
    }
    

    另外,要循环遍历新数组,您需要更改最终循环:

    //loop over $new_array
    foreach($new_array as $item) {
      echo $item['FloorplanName'];
      echo $item['Beds'];
      echo $item['Baths'];
    }
    

    【讨论】:

    • 非常感谢。就是这样!
    • @Omar 很高兴为您提供帮助;如果您觉得有帮助,请记得接受答案并点赞! ;)
    • 如何循环遍历 new_array 并只显示所有值,而不是键名
    • @Omar 请查看我的编辑。您需要使用$item['...'],而不是$item-&gt;{'...'},而只需使用echo。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多