我有以下编码的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
。