我有示例代码:
$array = array(
'GiamPy' => array(
'Age' => '18',
'Password' => array(
'password' => '1234',
'salt' => 'abcd',
'hash' => 'whirlpool'
),
'Something' => 'Else'
)
);
echo json_encode($array, JSON_PRETTY_PRINT);
我在PHP文档中已经看到,自PHP 5.5.0(最近),json_encode
允许一个新参数深度。
答案 0 :(得分:7)
该选项限制将要处理的深度(d'uh)。数组的深度是通过嵌套的深度来衡量的。这是一个深度为1的数组:
array(
'foo',
'bar',
'baz'
)
这是一个深度为2的数组:
array(
array(
'foo'
),
array(
'bar'
),
array(
'baz'
)
)
// ------ depth ------>
如果输入超过最大深度(默认为512),json_encode
将只返回false
。
为什么你可能会使用它是有争议的,你可能想要保护自己免受无意的无限递归或太多的资源使用。深度超过512级可能的数组具有无限递归引用,无法序列化。但是,如果您确定您的数组不是无限递归但是深度超过512,您可能希望明确地增加此限制。您可能还希望将限制降低为简单的错误捕获器;假设您希望结果具有最大深度,但您的输入数据可能有些不可预测。