为了账号安全,请及时绑定邮箱和手机立即绑定

访问 JSON 运算符数组中的数组

访问 JSON 运算符数组中的数组

PHP
慕桂英3389331 2021-10-08 14:32:04
我正在尝试访问“气候”键。我可以访问“UnitFeatures”运算符之外的所有项目。"Location": {          "Units": [               {                     "BonusComments": "THIS IS A BONUS DEAL",                     "CubicFootage": 125,                     "OrderGrouping": "0000001CONTAINER",                     "SquareFootage": 25,                     "TotalUnits": 45,                     "UnitFeature": {                          "Access": "",                          "Climate": "NON-CLIMATE",                          "Doors": "",                          "Elevation": "OUTSIDE",                          "Floor": "1",                          "Product": "CONTAINER"                          },                   },                 ]               }我已经能够使用关联数组进行访问。我还有一个 for 循环,它将信息输出到一个表中。$temp = "<table cellpadding='5px'>";$temp .= "<tr><th>Unit Size</th>";$temp .= "<th>Comments</th>";$temp .= "<th>Unit Sq. Footage</th>";$temp .= "<th>Units Available</th>";$temp .= "<th>Monthly Rent</th></tr>";for($i = 0; $i < sizeof($units) ; $i++) {    if($units[$i]["SquareFootage"]<=100) {        $temp .= "<tr>";        $temp .= "<td id='row'>" . $units[$i]["UnitSize"] . "</td>";        $temp .= "<td id='row'>" . $units[$i]["UnitFeature"]["Climate"] . "</td>";        $temp .= "<td id='row'>" . $units[$i]["SquareFootage"] . "</td>";        $temp .= "<td id='row'>" . $units[$i]["VacantUnits"] . "</td>";        $temp .= "<td id='row'>$" .$units[$i]['Monthly'] . ".00</td>";        $temp .= "</tr>";    } }$temp .= "</table>";echo $temp;我在每一种可能的配置中都尝试了包含: $units[$i]["UnitFeature"]["Climate"] 的行。输出应为“非气候”或“气候”。
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

查看API文档后,该UnitFeature对象似乎是可选的,并且可能为空。所以代码需要对此进行测试:


foreach ($units as $u) {

    if($u["SquareFootage"]<=100) {

        $temp .= "<tr>";

        $temp .= "<td id='row'>" . $u["UnitSize"] . "</td>";

        if (isset($u["UnitFeature"]["Climate"])) {

            $temp .= "<td id='row'>" . $u["UnitFeature"]["Climate"] . "</td>";

        } else {

            $temp .= "<td id='row'></td>";

        }

        $temp .= "<td id='row'>" . $u["SquareFootage"] . "</td>";

        $temp .= "<td id='row'>" . $u["VacantUnits"] . "</td>";

        $temp .= "<td id='row'>$" .$u['Monthly'] . ".00</td>";

        $temp .= "</tr>";

    } 

}


查看完整回答
反对 回复 2021-10-08
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

我试过你的 json 解码,json_decode但它不会。因为它返回语法错误。您可以使用json_last_error_msg(). 我还从您的 json 字符串中删除了一些“,”。您可以在jsonlint验证您的 json 字符串。现在它正在工作。


<?php


$jsonString = '{"Location" : {     

    "Units" : [

            {

                    "BonusComments": "THIS IS A BONUS DEAL",

                    "CubicFootage": 125,

                    "OrderGrouping": "0000001CONTAINER",

                    "SquareFootage": 25,

                    "TotalUnits": 45,

                    "UnitFeature": {

                        "Access": "",

                        "Climate": "NON-CLIMATE",

                        "Doors": "",

                        "Elevation": "OUTSIDE",

                        "Floor": "1",

                        "Product": "CONTAINER"

                        }

                }

                ]

  }}';


$jsonType = json_decode($jsonString);



foreach ($jsonType->Location->Units as $key => $value) {

    echo "KEY : ". $key."<br/>";

    echo $value->UnitFeature->Climate;

}

?>


查看完整回答
反对 回复 2021-10-08
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信