【问题标题】:I have problem with accessing this array PHP我在访问这个数组 PHP 时遇到问题
【发布时间】:2020-01-30 09:29:14
【问题描述】:

我有 JSON https://jsonplaceholder.typicode.com/todos/,我需要将所有数据放入表中。 我如何访问“已完成”? 我认为那是布尔值。我需要一个只打印 TRUE 的按钮和另一个只打印 FALSE 的按钮。我尝试了类似的方法,但不起作用。

这是我尝试过的:PHP 代码

<?php } elseif (isset($_POST['onlyCompBtn'])) {?>
   <?php    $data = $_POST['onlyCompBtn']; ?>
   <br></br>
     <table class="table table-striped">
         <tr>
           <th>User ID:</th>
           <th>ID:</th>
           <th>Title:</th>
           <th>Compiled:</th>
         </tr>
    <?php foreach ($arrays as $key => $value)  {    ?>
      <tr>
        <td> </td>
        <td> </td>
        <td></td>
        <td><?php echo $value -> completed['1'] ?></td>   // ['1'] or ['true']  doesn't work
      </tr>
     </table>
  <?php    }?>
<?php } ?>

我收到此错误:“尝试访问 bool 类型值的数组偏移量”

有什么建议吗? 蒂亚!

【问题讨论】:

  • 小提示:使用var_dump($data) 来检查您拥有哪些变量,以及它们是否符合您的要求。当显示的内容与您认为的不同(包括根本不显示)时,这真的很有帮助

标签: php arrays json


【解决方案1】:

如果您查看您的 json,completed 只是一个布尔值,而不是一个数组 ({"userId": 1, "id": 1, "title": "delectus aut autem","completed": false }...)。

变化:

<td><?php echo $value -> completed['1'] ?></td>

收件人:

<td><?php echo ($value->completed ? 'TRUE' : 'FALSE') ?></td>

Udate

如果您想过滤可以在 foreach 中放置 if 条件的结果,假设您只想显示完整的标题:

<?php foreach ($arrays as $key => $value)  { 
      if ($value->completed) {
         ?><tr>
           <td><?php echo $value->userId ?></td>
           <td><?php echo $value->id ?></td>
           <td><?php echo $value->title ?></td>
           <td><?php echo ($value->completed ? 'TRUE' : 'FALSE') ?></td>
         </tr><?php
      }
   }
?></table>

在这种情况下,您只显示已完成的列,打印它的已完成列和它的值可能没有意义,因为它始终为“TRUE”,但我保留它以防万一您的过滤器不同。

注意&lt;/table&gt; 应该放在foreach 之外。

【讨论】:

  • completed ?> 它打印“已完成”内的所有内容。我已经试过了。我需要制作一个只打印 True 的按钮和另一个只打印 False 的按钮
  • 看看你的json,完成只是一个布尔值:{"userId": 1, "id": 1, "title": "delectus aut autem","completed": false }...
  • 您可以更改我放置的“TRUE”和“FALSE”字符串以显示按钮或您需要的任何内容。如果您可以将预期输出的图像或 html 代码添加到您的问题中,我们可以为您提供更个性化的答案
  • 实际上我需要做类似的事情,但我不知道该怎么做。我正在学习 php 和 html css。
  • 如何打印已完成的标题?
【解决方案2】:

设置变量后,先尝试使用 json_decode($arrays) 解码数据,我相信这是你的问题

【讨论】:

    【解决方案3】:

    这会起作用的:

     <?php foreach ($arrays as $key => $value) {    ?>
            <tr>
              <td><?php echo $value->userId ?> </td>
              <td><?php echo $value->id ?> </td>
              <td><?php echo $value->title ?> </td>
              <td><?php echo $value->completed ? 'Compiled' : 'Not Compiled' ?></td>
            </tr>
          <?php }   ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-25
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多