【问题标题】:json_decode with values containing double quotesjson_decode 值包含双引号
【发布时间】:2011-12-09 15:21:32
【问题描述】:

我正在尝试使用可编辑的表格并让它工作,除非传递给保存函数的数组值包含双引号。错误发生在foreach循环中

foreach($saveArray as $rowId=>$row) {

可能包含双引号的是值(不是键),实际错误是:

Warning: Invalid argument supplied for foreach()

解决这个问题的最佳方法是什么,以某种方式转义它们,将它们更改为 &quot 代码,更改循环的工作方式?

编辑:

抱歉,问题实际上是 json_decode 函数和双引号值,而不是返回数组。

适用于非双引号条目

json 看起来像

{"2":{"component":"8\"", ...

所以它被转义了,但它没有解码成一个数组

【问题讨论】:

  • 你确定$saveArray是你代码中的一个数组吗?
  • Invalid argument supplied for foreach() 表示$saveArray 不是数组。向我们展示$saveArray 中的var_dump。
  • 在这种情况下,json_decode 函数出现故障,出于同样的原因(双引号),对于没有双引号的条目,一切正常
  • 在这种情况下,我们需要有关您的问题/代码的更多信息...
  • 我已经编辑了问题,当双引号存在时,json_decode 不返回数组

标签: php arrays foreach double-quotes


【解决方案1】:

看看$saveArray实际上是什么,使用

var_dump($saveArray)

它看起来不像你的$saveArray,不管它是什么,都支持foreach 构造。

如果$saveArray来自json_decode(),很可能你的JSON字符串是无效的,json_decode()只是返回NULL。

【讨论】:

  • 这就是正在发生的事情,我已经编辑了这个问题。有没有一种有效的方法可以在 json 字符串中放置双引号?
  • Mattp:与将双引号放入双引号 Javascript 字符串的方式相同...转义它。但是不要忘记,这些转义将被删除,一次一个,由字符串经过的每一层处理。
  • 发现问题,代码在json字符串上使用了stripslashes函数,我自己改一下吧
猜你喜欢
  • 2017-01-07
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
相关资源
最近更新 更多