我有一个数据库,其中一些数据以json格式编码。我想输出一个HTML表格,但当json编码数据单元格中的特定数据是一个数组时,我遇到了障碍。为HTML表中的字段输出“Array”一词以及“Notice:Array to string conversion in ...”。
我的代码使用MySQL语句来检索数据和通常的提取数组运算符。用于呈现json编码数据的特定代码是:
$user_params = json_decode($row['params'], true);
并创建输出:
<td>{$user_params['phone']}</td>
<td>{$user_params['ride_catagory']}</td>
上面的第一行正确呈现,因为数据被编码为单个文本字符串,但是,第二行给出了“数组”和消息,因为它被编码为json数据中的数组。我该如何解决这个问题?
以下是'params'数据库字段的内容:
{"phone":"444-336-5678","birth_year":"1965","volunteer":[""],"ride_catagory":["10-12","13-15","16 plus"],"ride_note":"on","membership_visible":"on"}
答案 0 :(得分:0)
尝试加入值
<td>{$user_params['phone']}</td>
<td>{implode($user_params['ride_catagory'],',')}</td>
答案 1 :(得分:0)
你可以用不同的方式管理这件事。
你实际的方式是依赖于知道你得到的array
的密钥,所以我猜你也可以假设你知道其中的内容类型。
如果您知道类型,那么当您知道元素的内容为array
以及时,就可以执行特定行为。
<?php
$row = array(
'params' => '{"phone":"444-336-5678","birth_year":"1965","volunteer":[""],"ride_catagory":["10-12","13-15","16 plus"],"ride_note":"on","membership_visible":"on"}'
);
$user_params = json_decode($row['params'], true);
?>
然后像(以一种非常盲目的方式):
<td><?= $user_params['phone']; ?></td>
<td><?= implode($user_params['ride_catagory'],', '); ?></td>
或喜欢(概念上更好):
<td><?= $user_params['phone']; ?></td>
<td>
<?php
if(is_array($user_params['ride_catagory'])) {
echo '<table><tr>'.PHP_EOL;
foreach ($user_params['ride_catagory'] as $category) {
echo sprintf('<td>%s</td>'.PHP_EOL, $category);
}
echo '</tr></table>';
} else {
echo $user_params['ride_catagory'];
}
?>
</td>
这一切都取决于你你想要代码的灵活性(就像你不知道数组元素将包含什么类型的数据一样工作)。
我想补充一点如果您没有验证它们,则不应该直接将值打印到输出(否则您会将自己暴露给 XSS攻击) 强>