为foreach php提供的参数出错

为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

我有这段代码,在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="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; ?>