【发布时间】:2017-11-08 00:53:47
【问题描述】:
获取此代码:
$json = file_get_contents($this->url, true);
$decode = json_decode($json, true);
foreach ($decode as $key => $value) {
...
}
很简单,嗯?
传递一个包含多达 500 个数组元素的 $json.... 工作正常!
超过该限制...错误是:
警告:为 foreach() 提供的参数无效 /c/website/retriever/WsGlassRetriever.php 第 19 行
该函数的参数是否存在内存限制?
我在文档中没有找到任何关于它的信息。我的版本是 PHP 5.2.17-rnx1.1 和 Suhosin-Patch 0.9.7 (cli)
【问题讨论】:
-
var_dump($decode)带给你什么? -
我不认为它的极限。它没有限制。试试
var_dump($decode)看类型 -
这可能不是因为元素的数量,而是因为无法解码的特定元素。在 php 5.3 中有 json_last_error() 函数。还要注意深度限制(默认为 512)
-
你可以使用
json_last_error()[edit: requires PHP >= 5.3!] 来确定到底出了什么问题:php.net/manual/en/function.json-last-error.php -
@Darhazer 512 现在是 128,之前是 20。如果你的 pre-5.2.3 这可能是一个真正的问题,但 OP 是 5.2.17 所以他是128.