为foreach php提供的参数出错
我有这段代码,在Chrome浏览器上显示一个错误为foreach php提供的参数出错,php,json,Php,Json,我有这段代码,在Chrome浏览器上显示一个错误 <?php $json = file_get_contents("file.json"); $data = json_decode($json, TRUE); ?> <html> <?php include 'cab.php'; ?> <body> <?php include 'menu.php'; ?> <div class="contai
<?php
$json = file_get_contents("file.json");
$data = json_decode($json, TRUE);
?>
<html>
<?php include 'cab.php'; ?>
<body>
<?php include 'menu.php'; ?>
<div class="container">
<table border="1" class="table table-striped table-hover" id="tbl">
<tr>
<td><strong>Data de publicação</strong></td>
<td><strong>Empresa Contratada</strong></td>
<td><strong>Empresa que Contratou</strong></td>
<td><strong>ID</strong></td>
<td><strong>Objecto adquirido</strong></td>
<td><strong>Preço Contratual</strong></td>
<td><strong>Data do Contrato</strong></td>
</tr>
<?php foreach ($data as $item) : ?>
<tr>
<td><?php echo $item->{'publicationDate'}; ?></td>
<td><?php echo $item->{'contracted'}; ?></td>
<td><?php echo $item->{'contracting'}; ?></td>
<td><?php echo $item->{'id'}; ?></td>
<td><?php echo $item->{'objectBriefDescription'}; ?></td>
<td><?php echo $item->{'initialContractualPrice'}; ?></td>
<td><?php echo $item->{'signingDate'}; ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
<?php include 'rodape.php';?>
</body>
</html>
有人能帮我解决这个问题吗
此文件包含一个json文件,并在html表中显示所有信息。
<div class="container">
<table border="1" class="table table-striped table-hover" id="tbl">
<tr>
<td><strong>Data de publicação</strong></td>
<td><strong>Empresa Contratada</strong></td>
<td><strong>Empresa que Contratou</strong></td>
<td><strong>ID</strong></td>
<td><strong>Objecto adquirido</strong></td>
<td><strong>Preço Contratual</strong></td>
<td><strong>Data do Contrato</strong></td>
</tr>
<?php
$json = file_get_contents("file.json");
$data = json_decode($json);
if(count((array)$data)>0):
foreach ($data as $item) : ?>
<tr>
<td><?php echo $item->publicationDate; ?></td>
<td><?php echo $item->contracted; ?></td>
<td><?php echo $item->contracting; ?></td>
<td><?php echo $item->id; ?></td>
<td><?php echo $item->objectBriefDescription; ?></td>
<td><?php echo $item->initialContractualPrice; ?></td>
<td><?php echo $item->signingDate; ?></td>
</tr>
<?php endforeach; else: echo "No data found"; endif; ?>
公共数据
Empresa Contratada
Empresa que Contratou
ID
反对adquirido
Preço contactual
数据与之相反
foreach
要求参数为数组或对象$data
两者都不是。因此,请检查json\u decode()
的返回值。如果为NULL
,则检查文件\u get\u contents()
的返回值。如果为FALSE
,则检查URL是否存在,依此类推。。。寓意:永远不要假设成功。做一个var_转储($data);在你对它进行解码并监控结果之后。。它真的工作吗?你能添加var\u dump($data)
的输出吗?注意:简单的对象属性不需要{}
。这些应简化为$item->publicationDate$item->contracted
等。。。{}
包含的字符串应该只用于动态构造的属性名,而您没有动态构造的属性名。
<div class="container">
<table border="1" class="table table-striped table-hover" id="tbl">
<tr>
<td><strong>Data de publicação</strong></td>
<td><strong>Empresa Contratada</strong></td>
<td><strong>Empresa que Contratou</strong></td>
<td><strong>ID</strong></td>
<td><strong>Objecto adquirido</strong></td>
<td><strong>Preço Contratual</strong></td>
<td><strong>Data do Contrato</strong></td>
</tr>
<?php
$json = file_get_contents("file.json");
$data = json_decode($json);
if(count((array)$data)>0):
foreach ($data as $item) : ?>
<tr>
<td><?php echo $item->publicationDate; ?></td>
<td><?php echo $item->contracted; ?></td>
<td><?php echo $item->contracting; ?></td>
<td><?php echo $item->id; ?></td>
<td><?php echo $item->objectBriefDescription; ?></td>
<td><?php echo $item->initialContractualPrice; ?></td>
<td><?php echo $item->signingDate; ?></td>
</tr>
<?php endforeach; else: echo "No data found"; endif; ?>