反序列化数组在循环显示时数据合并问题求助
解决PHP反序列化MySQL存储数组后表格行数据累加问题
问题描述
在MySQL中存储序列化数组,通过PHP反序列化后在表格展示时出现异常:每一行内容会累加之前所有行的数据,例如第一行显示自身的3条数据,第二行却包含第一行的3条加自身的4条,后续行均以此类推。
问题原因
变量$abc在循环外部初始化,每次循环仅通过.=追加当前行的反序列化内容,未在处理每一行前重置为空,导致之前行的内容被持续保留并累加。
修复后的代码
$output = ''; foreach($result as $row) { // 处理新行前重置变量,清空之前的内容 $abc = ''; $fine_types = unserialize($row['fine_type']); foreach ($fine_types as $fine_type) { $abc .= "<div dir='rtl' lang='ar' class='fntype'> {$fine_type}</div>"; } // 构建表格行 $output .= ' <tr> <td style="text-align:right;">' . $abc . '</td> </tr>'; } echo $output;
序列化与反序列化示例
序列化字符串示例:
a:3:{i:0;s:177:"66 - عدم تخزين وحفظ المواد الغذائية الجافة والمبردة والمجمدة في درجة مناسبة حرارة مناسبة لكل نوع";i:1;s:76:"13 - عدم وجود لوحة إعلانية بالاسم التجاري";i:2;s:63:"9 - إضافة فرع أو مستودع بدون ترخيص";}反序列化后中文内容:
- 66 - 未将干制、冷藏、冷冻食品存储在对应类型适配的合适温度环境中
- 13 - 未设置带有商业名称的公告标识牌
- 9 - 在未取得许可证的情况下增设分支机构或仓库
内容的提问来源于stack exchange,提问作者Hunt Gear Pro
相关产品推荐
相关产品推荐

