json_last_error()
json_last_error() — Returns the last error occurred.
Built-in function of PHP 8.5. The manual lists it as available in PHP 5 >= 5.3.0, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.
What it does
Returns the last error (if any) occurred during the last JSON validation/encoding/decoding, which did not specify JSON_THROW_ON_ERROR.
Signature
json_last_error(): int
Parameters
This function takes no parameters.
Return value
Returns an integer, the value can be one of the following constants: JSON_ERROR_NONE No error has occurred JSON_ERROR_DEPTH The maximum stack depth has been exceeded JSON_ERROR_STATE_MISMATCH Invalid or malformed JSON JSON_ERROR_CTRL_CHAR Control character error, possibly incorrectly encoded JSON_ERROR_SYNTAX Syntax error JSON_ERROR_UTF8 Malformed UTF-8 characters, possibly incorrectly encoded JSON_ERROR_RECURSION One or more recursive references in the value to be encoded JSON_ERROR_INF_OR_NAN One or more NAN or INF values in the value to be encoded JSON_ERROR_UNSUPPORTED_TYPE A value of a type that cannot be encoded was given JSON_ERROR_INVALID_PROPERTY_NAME A property name that cannot be ...
Example
A runnable snippet:
// A valid json string $json[] = '{"Organization": "PHP Documentation Team"}'; // An invalid json string which will cause an syntax // error, in this case we used ' instead of " for quotation $json[] = "{'Organization': 'PHP Documentation Team'}"; foreach ($json as $string) { echo 'Decoding: ' . $string; json_decode($string); 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 PHP_EOL; }
Output:
Decoding: {"Organization": "PHP Documentation Team"} - No errors Decoding: {'Organization': 'PHP Documentation Team'} - Syntax error, malformed JSON
Changelog
| Version | Change |
|---|---|
| 8.1.0 | JSON_ERROR_NON_BACKED_ENUM was added. |
See also
json_last_error_msg(), json_decode(), json_encode()
All PHP 8.5 built-in functions
Reference card built from the PHP manual page json_last_error() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.