使用PHP在表中显示JSON文件中的数据

时间:2014-11-13 20:10:51

标签: php html json phpmyadmin html-table

请有人指出我出错的地方。

我正在尝试使用PHP在html表中显示JSON数据文件(使用phpmyadmin中的导出函数生成)。

这是JSON文件:

      /**
       Export to JSON plugin for PHPMyAdmin
       @version 0.1
       */

      [{"Player": "Shazu","Games Without Loss": 8}, {"Player": "Vlad","Games Without Loss": 7}]

这是PHP:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <link href="CSS/json.css" rel="stylesheet" type="text/css" />

      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Untitled Document</title>
      </head>

      <body>

      <thead>

          <tr>
              <th>Player</th>
              <th>Games Without Loss</th>
          </tr>
      </thead>

      <?php

      $json=file_get_contents("1314withoutloss.json");
      $data =  json_decode($json, true);


      foreach($data->results as $item) 
      {
              echo '<tr>';
                  echo '<td>'.$item['Player'].'</td>';
                  echo '<td>'.$item['Games Without Loss'].'</td>';
              echo '</tr>';
      }

      ?>

      </body>
      </html>

这是我在浏览器中获得的内容:

  

没有损失的玩家游戏
  注意:尝试在第32行的C:\ xampp \ htdocs \ Playersleague2 \ jsontest.php中获取非对象的属性

     

警告:在第32行的C:\ xampp \ htdocs \ Playersleague2 \ jsontest.php中为foreach()提供的参数无效

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

尝试使用它,适应您的代码:

<强> dummycode:

$json = '[{"Player": "Shazu","Games Without Loss": 8}, {"Player": "Vlad","Games Without Loss": 7}]';

$data = json_decode($json);
foreach ($data as $item)
{
echo $item->Player;

}

,这是您的实际代码:

$data =  json_decode($json);


foreach($data as $item)
{
    echo '<tr>';
    echo '<td>'.$item->Player.'</td>';
    echo '<td>'.$item->{"Games Without Loss"}.'</td>';
    echo '</tr>';
}

使用json_decode($data, true)返回的对象将转换为关联数组,因此您无法像在->中那样使用对象运算符foreach ( ... )访问它们。在任何情况下,它只是$data,对象或数组值将在循环内部获取(在这种情况下,如果确实存在一个名为&#34的对象/数组键,则会有所不同;结果& #34;)

编辑:

使用此:

...
$json = file_get_contents('json.json');

$s = explode("*/",$json);
$data =  json_decode($s[1]);
...

请注意:这样工作是因为你的json文件有一些额外的行被评论,而不是你可以尝试调整phpadmins输出来摆脱文件顶部的评论块

答案 1 :(得分:-1)

您没有在循环内正确访问Object键。当具有如下空格时,您可以访问对象键:

 $item->{"Games Without Loss"}

此外,不建议使用带空格的键。