Skip to content
Advertisement

How to json_encode $GLOBALS?

I’m trying to debug a PHP application, and as a section of the debug process, I passed print_r($GLOBALS) through the AJAX request to my browser. However, I’d prefer to see it in native JSON form because it comes out better in the browser. I’m trying to use the following snippet of code:

json_encode($GLOBALS);

but I’ve found it returns bool(false). The JSON documentation says “Returns a JSON encoded string on success or FALSE on failure.” But what about $GLOBALS makes it fail? Is it the recursive $GLOBALS[‘GLOBALS’]?

I was thinking as an alternative to loop over $GLOBALS and put that in an array, but that seems quite pointless when the point of json_encode is to encode an array.

Advertisement

Answer

Upon testing this myself, it appears json_encode() can’t handle recursion such as what’s provided in $GLOBALS[‘GLOBALS’]… etc.

So a trick(?) you can do is:

json_encode(array_slice($GLOBALS, 1));

Which will skip past $GLOBALS[‘GLOBALS’] and continue encoding the rest of the array.

*EDIT: $GLOBALS[‘GLOBALS’] appears first for me when printing this array, but a better way is to find where $GLOBALS[‘GLOBALS’] appears and skip that element entirely.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement