繁体   English   中英

如何在Wordpress插件的PHP中遍历JSON数据

[英]How to iterate through JSON data in PHP for Wordpress Plugin

我正在构建一个调用第三方API的插件。 我正在取回数据,但看起来有点时髦,我无法迭代和操纵数据以显示在页面上。

我正在使用此函数来调用正在运行的API ...

function herocreative_rentcafe_get_data( $herocreative_companycode, $herocreative_propertycode ) {

    $json_feed_url = 'https://api.rentcafe.com/rentcafeapi.aspx?requestType=floorplan&companyCode=' . $herocreative_companycode . '&propertyCode=' . $herocreative_propertycode ;
    $args = array( 'timeout' => 120 );

    $json_feed = wp_remote_get( $json_feed_url, $args );

    $herocreative_data = json_decode( $json_feed['body'] );

    return $herocreative_data;

} 

我正在使用此代码来迭代响应...

   <?php for( $i = 0; $i < count($herocreative_data); $i++ ): ?>
    <li>
        <ul>
            <li>
                <?php echo $herocreative_data->{'AvailableUnitsCount'}[$i]; ?>              
            </li>
        </ul>                                   
    </li>                               
    <?php endfor; ?>

返回的数据是这样的:

JSON Feed

    array(3) {
  [0]=>
  object(stdClass)#321 (18) {
    ["PropertyId"]=>
    string(6) "457547"
    ["FloorplanId"]=>
    string(7) "2027167"
    ["FloorplanName"]=>
    string(11) "One Bedroom"
    ["Beds"]=>
    string(1) "1"
    ["Baths"]=>
    string(4) "1.00"
    ["MinimumSQFT"]=>
    string(3) "714"
    ["MaximumSQFT"]=>
    string(3) "714"
    ["MinimumRent"]=>
    string(4) "1125"
    ["MaximumRent"]=>
    string(4) "1355"
    ["MinimumDeposit"]=>
    string(1) "1"
    ["MaximumDeposit"]=>
    string(1) "1"
    ["AvailableUnitsCount"]=>
    string(1) "5"
    ["AvailabilityURL"]=>
    string(137) "https://epicasset.securecafe.com/onlineleasing/park-210/oleapplication.aspx?stepname=Apartments&myOlePropertyId=457547&floorPlans=2027167"
    ["FloorplanImageURL"]=>
    string(65) "http://cdn.rentcafe.com/dmslivecafe/3/457547/3_457547_2310392.jpg"
    ["FloorplanImageName"]=>
    string(7) "1x1.jpg"
    ["PropertyShowsSpecials"]=>
    string(1) "0"
    ["FloorplanHasSpecials"]=>
    string(1) "0"
    ["UnitTypeMapping"]=>
    string(6) "p0.1x1"
  }
  [1]=>
  object(stdClass)#323 (18) {
    ["PropertyId"]=>
    string(6) "457547"
    ["FloorplanId"]=>
    string(7) "2027168"
    ["FloorplanName"]=>
    string(20) "Two Bedroom One Bath"
    ["Beds"]=>
    string(1) "2"
    ["Baths"]=>
    string(4) "1.00"
    ["MinimumSQFT"]=>
    string(4) "1000"
    ["MaximumSQFT"]=>
    string(4) "1000"
    ["MinimumRent"]=>
    string(4) "1325"
    ["MaximumRent"]=>
    string(4) "1455"
    ["MinimumDeposit"]=>
    string(1) "0"
    ["MaximumDeposit"]=>
    string(1) "0"
    ["AvailableUnitsCount"]=>
    string(1) "0"
    ["AvailabilityURL"]=>
    string(137) "https://epicasset.securecafe.com/onlineleasing/park-210/oleapplication.aspx?stepname=Apartments&myOlePropertyId=457547&floorPlans=2027168"
    ["FloorplanImageURL"]=>
    string(65) "http://cdn.rentcafe.com/dmslivecafe/3/457547/3_457547_2310393.jpg"
    ["FloorplanImageName"]=>
    string(7) "2x1.jpg"
    ["PropertyShowsSpecials"]=>
    string(1) "0"
    ["FloorplanHasSpecials"]=>
    string(1) "0"
    ["UnitTypeMapping"]=>
    string(6) "p0.2x1"
  }
  [2]=>
  object(stdClass)#324 (18) {
    ["PropertyId"]=>
    string(6) "457547"
    ["FloorplanId"]=>
    string(7) "2027169"
    ["FloorplanName"]=>
    string(20) "Two Bedroom Two Bath"
    ["Beds"]=>
    string(1) "2"
    ["Baths"]=>
    string(4) "2.00"
    ["MinimumSQFT"]=>
    string(4) "1095"
    ["MaximumSQFT"]=>
    string(4) "1095"
    ["MinimumRent"]=>
    string(4) "1395"
    ["MaximumRent"]=>
    string(4) "1525"
    ["MinimumDeposit"]=>
    string(1) "0"
    ["MaximumDeposit"]=>
    string(1) "0"
    ["AvailableUnitsCount"]=>
    string(1) "0"
    ["AvailabilityURL"]=>
    string(137) "https://epicasset.securecafe.com/onlineleasing/park-210/oleapplication.aspx?stepname=Apartments&myOlePropertyId=457547&floorPlans=2027169"
    ["FloorplanImageURL"]=>
    string(65) "http://cdn.rentcafe.com/dmslivecafe/3/457547/3_457547_2310394.jpg"
    ["FloorplanImageName"]=>
    string(7) "2x2.jpg"
    ["PropertyShowsSpecials"]=>
    string(1) "0"
    ["FloorplanHasSpecials"]=>
    string(1) "0"
    ["UnitTypeMapping"]=>
    string(6) "p0.2x2"
  }
}

您需要做的是在数组上进行foreach循环,然后每次出现都包含一个对象地址,因此

<?php 
foreach ( $herocreative_data as $data) : 
?>
<li>
    <ul>
        <li>
            <?php echo $data->AvailableUnitsCount; ?>              
        </li>
    </ul>                                   
</li>                               
<?php 
endforeach; 
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM