我有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的值的数组偏移量”
有什么建议吗? TIA!
答案 0 :(得分: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中,假设您只想显示完整的标题:
<?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',但我还是保留了它,以防您的过滤器不同。
请注意,</table>
应该放在foreach之外。
答案 1 :(得分:0)
设置变量后,请尝试首先使用json_decode($ arrays)解码数据,我相信这是您的问题
答案 2 :(得分:0)
这将起作用:
<?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 } ?>