【发布时间】:2018-10-04 13:13:03
【问题描述】:
出了点问题,我将 json_encode 响应保存在 mysql db 中。它有时会保存0 value.im 100% 确保我的 json_encode 函数没有接收0 作为参数,因为它总是得到空数组或关联数组,所以没有任何机会在参数中接收0。
问题是为什么 json_encode 有时会返回 0 值。
我在 db 表中有列类型 longtext,我在其中保存其响应。
是字符类型的问题吗?喜欢 UTF8 还是非 UTF8?
这是一个代码 sn-p:
$jsonPayload = [];
if (isset($obj['answer']) && (!empty($obj['answer']) || $obj['answer'] == 0)) {
$jsonPayload[$form_fields[$i]->id] = $obj;
}
return json_encode($jsonPayload);
【问题讨论】:
-
您使用的关系数据库完全错误。您不会将数组或任何编码到数据库中。您将每个值放入他们的表格列中。这就是使用关系数据库的意义。
-
var 转储数组以便我们看到它
-
json_encode不会返回0,但它可以返回false。我敢打赌,你的编码中有一些非 UTF8 字符 -
根据我的调查,由于非 UTF8 字符,它返回 0。但没有这样的字符,我可以测试 json_encode 在传递非 UTF8 字符时是否返回 0。我想重现它。