[英]json_decode of array not rendering correctly in HTML output
我有一個數據庫,其中一些數據以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"}
嘗試加入這些值
<td>{$user_params['phone']}</td>
<td>{implode($user_params['ride_catagory'],',')}</td>
你可以用不同的方式管理這件事。 你實際的方式是依賴於已經知道你得到的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攻擊 ) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.