请有人指出我出错的地方。
我正在尝试使用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()提供的参数无效
非常感谢您的帮助。
答案 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"}
此外,不建议使用带空格的键。