JSON_ERROR_RECURSION从json_encode意味着什么? - php

由于某种奇怪的原因,我每大约100个请求在PHP7上收到此错误,但直到重新启动fpm恶魔后我才能摆脱该错误,但是,真正的问题是我无法解释开始诊断该错误的原因。

我看了一下文档http://php.net/manual/en/function.json-last-error.php,它不是很有用,并且似乎没有任何真正的链接。

我知道此错误实际上与递归深度(JSON_ERROR_DEPTH)不相关,那么此错误实际上是什么意思?

这是失败的数组的var_dump()

 array (
'ns' => 'user',
'where' => '{"_id":"MongoDB\\\\BSON\\\\ObjectID(5505a4f647ac1824618b4567)","status":10}',
'projection' =>
array (
),
'sort' =>
array (
),
'limit' => NULL,
'skip' => NULL,
)

参考方案

JSON_ERROR_RECURSION表示传递给json_encode()的数据包含一个或多个递归引用。

$data = array();
$data['foo'] = &$data; // <-- recursive reference here

var_dump(json_encode($data)); // bool(false)
var_dump(json_last_error_msg()); // string(18) "Recursion detected"
var_dump(json_last_error() === JSON_ERROR_RECURSION); // bool(true)

像这样的代码将起作用:

$data['foo'] = 'hello';
$data['bar'] = &$data['foo'];

但不是这样(另一个递归引用):

$data['foo'] = [1, 2, 3];
$data['foo'][] = &$data['foo'];

递归引用意味着引用指向一个变量,该变量又包含相同的引用。

json_encode网址失败 - php

有人在this bug附近吗?echo json_encode(array('url'=>'/foo/bar')); {"url":"\/foo\/bar"} 我使用Zend_Json and Zend_Json_Expr以便我甚至可以在js对象中获取回调函数-但我无法获得…

使用JSON从php到jquery获取值 - php

我对这些东西很陌生..这可能是一个简单的问题,但是西提尔...我必须使用php从我的mysql数据库中获取日期,并使用JSON从那里获取到jquery文件的日期,以使其与我的jquery插件一起工作。我将值放在数组中并使用了` $tDate['year']= 2012 $tDate['month']=03 $tDate…

如何使用Ajax调用检索数据 - php

我喜欢使用Ajax调用来检索字符串,但是我一直在响应中获取整个html页面。检索字符串的方法是什么?$.ajax({ url: '{$domainpath}{$language}/reservations/updatestartdates', data: {property:property,stayduration:staydurati…

使用Jquery时无法显示返回的JSON - php

我正在尝试使用jquery检索在我的PHP脚本中生成的以下json。但是,我无法显示它。如果我警告它,它只会显示“未定义”。使用$('#demo')。html(data.htmlOutput)显示html也不做任何事情。请有人指出我做错了吗?$arr = array('htmlOutput' => '<b>he…

找不到ErrorException(E_ERROR)类'app \ MyLib \ MyClass'-类似的类工作正常 - php

我正在创建一个Web应用程序。我是Laravel的新手,并且仍然在学习。无论如何,这是我的问题:我正在尝试将自定义类包含到我的项目中。我设法加入了一个类(管理员),并尝试与另一个类(Profesor)做同样的事情,但是尽管事实是第一个很好地工作了,但另一个却没有。我在应用程序文件夹Biblioteka的子文件夹中创建了文件,命名为Administrator …