使用 php 将 json 数据解码并打印到 html 表中



我有以下编码的json数组:

function getMostActive($link) {
$query = "SELECT username AS staff, COUNT(*) As Total FROM vloer_action_logs WHERE task_type = 'job_status_change' AND accessed_time >= '2019-12-31' AND accessed_time <= '2020-01-06'
Group by username ORDER BY 2 DESC";
$result = mysqli_query($link, $query);
if (!$result)
die(mysqli_error($link));
$jsonData = array();
while ($array = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$jsonData[] = $array;
}
return json_encode($jsonData);
}

我想在表格中打印这些数据。已尝试以下操作

$getMostActive = json_decode(getMostActive($link),true);
<?php foreach ($getMostActive as $key=>$value) { ?>
<tr>
<td class="dark"><?php echo $value['Floor'];?> </td>
<td class="end"><?php echo $value['Total'];?></td>
</tr>

但它给我带来了错误:

尝试获取非对象的属性"地板"/var/www/html/users/reports/report.php

我该如何解决这个问题。提前致谢

正如许多人所说,您在getMostActive((函数的第一行中的查询不会选择任何名为Floor的字段。出于这个原因,当你解码json的那一刻,你会得到一个类似于这个的数组:

[
[
"staff" => "name1",
"Total" => 5
],
[
"staff" => "name2",
"Total" => 3
]
// [...]
]

没有任何条目表示包含您要查找的Floor字段的单行。

要进行检查,请暂时将以下代码放在表的正前

echo '<pre>';
var_dump($getMostActive);

然后修复查询。就我所看到的,其他一切都是正确的。

希望我有任何帮助。

你有几个错误。首先,您尝试解码的 JSON 必须是字符串。而且您在解码时也缺少一个 $。

这是工作代码:

<?php 
$getMostActive = '[{"Floor":"carpet","Total":"22"},{"Floor":"ceramic-tiles","Total":"13"},{"Floor":"hardwood","Total":"13"}]';
$getMostActive = json_decode($getMostActive,true);
?>
<table>
<?php
foreach ($getMostActive as $key=>$value) { 
?>
<tr>
<td class="dark"><?php echo $value['Floor'];?> </td>
<td class="end"><?php echo $value['Total'];?></td>
</tr>
<?php 
}
?>
</table>

试试下面的一个。

$getMostActive = '[{"Floor":"carpet","Total":"22"},{"Floor":"ceramic-tiles","Total":"13"},{"Floor":"hardwood","Total":"13"}]';
$getMostActive = json_decode($getMostActive,true);
foreach ($getMostActive as $key=>$value) { ?>
<tr>
<td class="dark"><?php echo $value['Floor'];?> </td>
<td class="end"><?php echo $value['Total'];?></td>
</tr>
<?php } ?>

看起来您的 JSON 数据不正确,请检查single quote

相关内容

  • 没有找到相关文章

最新更新