【问题标题】:PHP / JSON: How do I know if JSON data is empty or not?PHP / JSON:我如何知道 JSON 数据是否为空?
【发布时间】:2020-01-21 01:31:25
【问题描述】:

目前,我创建了一个显示数据库 (JSON) 数据的表。在那个表中,我想检查数据是否存在。假设数据为空,我想显示“目前没有可用的预订数据”。

问题是,我不知道如何检查现有数据。目前,如果数据为空,则表格仅显示<th>,并且没有“此时无可用预订数据”字样。

以下是我当前的代码:

  <?php

  //retrieve json
  $url = "http://172.20.0.45/TGWebService/TGWebService.asmx/displayAdminBookingDashboard?adminEmail=$Email";
  $data = file_get_contents($url);
  $json = json_decode($data);

  if(empty($json)){
    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px;>";
    echo "<h4 class='card-title'><i>No booking data available at this moments</i></h4>";

  }else{

    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px; overflow-y: scroll;'>";
      echo "<h4 class='card-title'>All Booking</h4>";
        echo "<table>";
        echo "<thead>";
          echo "<tr>";
              echo "<th>#</th>
              <th>Requester</th>
              <th>Factory</th>
              <th>Room</th>
              <th>Purpose</th>
              <th>Status</th>
              <th>Action</th>
            </tr>
          </thead>
          <tbody >";

          foreach ($json->bookingList as $row) {

            $status=$row->status;

            if($status=="Approve"){

                $color="color:green";

            }else if($status=="Pending"){

              $color="color:blue";

            }else{

              $color="color:red";

            }

            echo "<tr>";
              echo "<td>" . $row->bookNo. "</td>";
              echo "<td>" . $row->requestedBy. "</td>";                                              
              echo "<td>" . $row->facID. "</td>";
              echo "<td>" . $row->roomName. "</td>";
              echo "<td>" . $row->desc. "</td>";   
              echo "<td style='$color'><strong>" . $status ."</strong></td>";
              echo "<td>";
              echo "<a class='btn-view btn-primary btn-sm' href='../../view_booking/admin/view_booking_admin.php?Book_No=". $row->bookNo ."' data-toggle='tooltip'>View</a>";
              echo "</td>";
            echo "</tr>";

          }

          echo "</tbody>";
        echo "</table><br>";  
      echo "</div>";
    echo "<div>";
  }

  ?>            

【问题讨论】:

  • 当没有可用的预订数据时,您能否显示 $json 的 var_dump?即使在没有预订数据的情况下,json实际上也可能不是空的。
  • 我能知道我需要把var_dump放在哪一行吗?
  • 还添加了您的 json 响应。试试 count json count($json);如果计数更大,则执行其他操作 在这些时刻没有可用的预订数据
  • $json = json_decode($data);之后

标签: php json sql-server


【解决方案1】:

试试下面的代码:

<?php

  //retrieve json
  $url = "http://172.20.0.45/TGWebService/TGWebService.asmx/displayAdminBookingDashboard?adminEmail=$Email";
  $data = @file_get_contents($url);
  $json = json_decode($data);

  if($json === FALSE && empty($json)){
    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px;>";
    echo "<h4 class='card-title'><i>No booking data available at this moments</i></h4>";

  }else{

    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px; overflow-y: scroll;'>";
      echo "<h4 class='card-title'>All Booking</h4>";
        echo "<table>";
        echo "<thead>";
          echo "<tr>";
              echo "<th>#</th>
              <th>Requester</th>
              <th>Factory</th>
              <th>Room</th>
              <th>Purpose</th>
              <th>Status</th>
              <th>Action</th>
            </tr>
          </thead>
          <tbody >";

          foreach ($json->bookingList as $row) {

            $status=$row->status;

            if($status=="Approve"){

                $color="color:green";

            }else if($status=="Pending"){

              $color="color:blue";

            }else{

              $color="color:red";

            }

            echo "<tr>";
              echo "<td>" . $row->bookNo. "</td>";
              echo "<td>" . $row->requestedBy. "</td>";                                              
              echo "<td>" . $row->facID. "</td>";
              echo "<td>" . $row->roomName. "</td>";
              echo "<td>" . $row->desc. "</td>";   
              echo "<td style='$color'><strong>" . $status ."</strong></td>";
              echo "<td>";
              echo "<a class='btn-view btn-primary btn-sm' href='../../view_booking/admin/view_booking_admin.php?Book_No=". $row->bookNo ."' data-toggle='tooltip'>View</a>";
              echo "</td>";
            echo "</tr>";

          }

          echo "</tbody>";
        echo "</table><br>";  
      echo "</div>";
    echo "<div>";
  }

  ?>   

【讨论】:

  • 一个好的答案还解释了发生了什么变化以及为什么要帮助 OP 和未来的观众理解,而不是仅仅复制代码并试图找出发生了什么变化。
  • $json === FALSE 对空($json)是多余的。我认为问题在于 $json 实际上有一些内容,即使没有可用的预订数据。
【解决方案2】:

我已经解决了我的问题。我只是在空 json 中添加“bookingList”

 <?php

  //retrieve json
  $url = "http://172.20.0.45/TGWebService/TGWebService.asmx/displayAdminBookingDashboard?adminEmail=$Email";
  $data = file_get_contents($url);
  $json = json_decode($data);

  if(empty($json->bookingList)){
    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px;>";
    echo "<h4 class='card-title'><i>No booking data available at this moments</i></h4>";

  }else{

    echo "<div class='card bg-light'>";
    echo "<div class='card-body double' style='height: 400px; overflow-y: scroll;'>";
      echo "<h4 class='card-title'>All Booking</h4>";
        echo "<table>";
        echo "<thead>";
          echo "<tr>";
              echo "<th>#</th>
              <th>Requester</th>
              <th>Factory</th>
              <th>Room</th>
              <th>Purpose</th>
              <th>Status</th>
              <th>Action</th>
            </tr>
          </thead>
          <tbody >";

          foreach ($json->bookingList as $row) {

            $status=$row->status;

            if($status=="Approve"){

                $color="color:green";

            }else if($status=="Pending"){

              $color="color:blue";

            }else{

              $color="color:red";

            }

            echo "<tr>";
              echo "<td>" . $row->bookNo. "</td>";
              echo "<td>" . $row->requestedBy. "</td>";                                              
              echo "<td>" . $row->facID. "</td>";
              echo "<td>" . $row->roomName. "</td>";
              echo "<td>" . $row->desc. "</td>";   
              echo "<td style='$color'><strong>" . $status ."</strong></td>";
              echo "<td>";
              echo "<a class='btn-view btn-primary btn-sm' href='../../view_booking/admin/view_booking_admin.php?Book_No=". $row->bookNo ."' data-toggle='tooltip'>View</a>";
              echo "</td>";
            echo "</tr>";

          }

          echo "</tbody>";
        echo "</table><br>";  
      echo "</div>";
    echo "<div>";
  }

  ?>

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 2019-12-20
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多