敢肯定你的JSON代碼的格式存在問題,已經使用JSON在這裏超過20,000值是2000陣列的一個簡單的腳本
$string = "Sample String Data ¶";
$string = preg_replace('/[^[:print:]]/', '',$string); // remove all values that can affect JSON
$array = array();
for($i = 0 ; $i < 2000; $i++)
{
if(mt_rand(0, 1))
{
$array[] = $string ;
}
else
{
$array[] = array($string,1,$string) ;
}
}
$json = json_encode($array);
$decodeArray = json_decode($json);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
echo "<br />" ;
foreach ($decodeArray as $key => $value) {
print_r($value) ;
flush();
}
編輯2
我很感興趣知道是否有任何限制..只測試它與250,000(二十五萬的價值觀,它工作正常)
謝謝 Oleku
是什麼'的var_dump($解碼)'給你? – 2012-03-28 13:24:02
我不認爲它的限制。它沒有限制。嘗試'var_dump($ decode)'來查看類型 – safarov 2012-03-28 13:24:45
它可能不是因爲元素的數量,而是因爲無法解碼的特定元素。在PHP 5.3中有json_last_error()函數。還要注意深度限制(默認512) – 2012-03-28 13:24:58