【问题标题】:php json_encode is returning 0 , zero value sometimes [duplicate]php json_encode 返回 0 ,有时为零值[重复]
【发布时间】: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。我想重现它。

标签: php mysql json


【解决方案1】:

使用

json_encode($jsonPayload,JSON_UNESCAPED_SLASHES);

也许它会起作用。

【讨论】:

  • 兄弟它返回0,你认为它的字符类型有问题吗?如 UTF8 或非 UTF8 字符。
  • 能否请您出示 print_r($jsonPayload);结果?
  • 没有兄弟,它在实时服务器上,我不知道payload中有什么,但是payload中可以存在特殊字符,我需要这样的字符,它为json_encode返回0
  • 不,这不是问题
猜你喜欢
  • 2016-08-25
  • 2016-03-03
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2017-09-05
  • 2021-12-27
  • 2021-11-11
相关资源
最近更新 更多