json_decode
NULL
当您要求它解码的字符串无效时返回。您可以使用它json_last_error
来诊断问题。
当您要循环这样的数组时,您应该确保该值实际上是一个数组。
$data= json_decode($_POST['moment'], true);
if (!is_array($data)) {
echo json_error_string(json_last_error());
} else {
foreach($data as $item) {
echo $item;
}
}
根据手册中的代码:
function json_error_string ($json_error_code) {
switch ($json_error_code) {
case JSON_ERROR_NONE:
return ' - No errors';
break;
case JSON_ERROR_DEPTH:
return ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
return ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
return ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
return ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
return ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
return ' - Unknown error';
break;
}
}
最后,您没有收到任何错误消息表明您已经error_reporting
关闭或display_errors
关闭。您需要使用 启用所有错误报告error_reporting(E_ALL & E_STRICT); ini_set('display_errors', '1');
。从生产代码中删除它,但是当您积极工作时,您需要查看有关您正在创建的代码的所有可能信息。
文档