Edit report at http://bugs.php.net/bug.php?id=54484&edit=1
ID: 54484 Updated by: scott...@php.net Reported by: wildcat at the-wildcat dot de Summary: Empty string in json_decode doesn't set/reset json_last_error Status: Open Type: Bug Package: JSON related Operating System: Linux PHP Version: 5.3.6 Block user comment: N Private report: N New Comment: a string of length 0 skips the decoder and returns null. I'm thinking it should set the error code to 4 so I'll fix it to do so. Previous Comments: ------------------------------------------------------------------------ [2011-04-07 14:24:55] wildcat at the-wildcat dot de Description: ------------ If you decode an empty json value, the internal error state doesn't change. Decode a valid json value and after that an empty value, the error state is 0 Decode an invalid json value and after that an empty value, the error state remains 4 (JSON_ERROR_SYNTAX) (I think it's the same for all error states, but haven't actually tested) I'm not quite sure whether an empty string is valid json and should reset the error state to 0 or whether it is invalid json and should set the error state to 4. Because a valid empty json string is '""' and not '' Test script: --------------- <?php error_reporting(E_ALL); json_decode('{"test":"test"}'); var_dump(json_last_error()); json_decode(""); var_dump(json_last_error()); json_decode("invalid json"); var_dump(json_last_error()); json_decode(""); var_dump(json_last_error()); ?> Expected result: ---------------- int(0) int(0) int(4) int(0) OR int(0) int(4) int(4) int(4) Actual result: -------------- int(0) int(0) int(4) int(4) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=54484&edit=1