我正在尝试调试 PHP 应用程序,作为调试过程的一部分,我通过 AJAX 请求将 print_r($GLOBALS) 传递给我的浏览器。但是,我更愿意以原生 JSON 形式查看它,因为它在浏览器中表现得更好。我正在尝试使用以下代码片段:
json_encode($GLOBALS);
但我发现它返回 bool(false)。 JSON documentation 表示“成功时返回 JSON 编码的字符串,失败时返回 FALSE。”但是 $GLOBALS 会导致它失败吗?它是递归的 $GLOBALS['GLOBALS'] 吗?
我正在考虑作为循环 $GLOBALS 并将其放入数组的替代方法,但是当 json_encode 的要点是对数组进行编码时,这似乎毫无意义。
最佳答案
自己对此进行测试后,似乎 json_encode() 无法处理递归,例如 $GLOBALS['GLOBALS']... 等中提供的内容。
所以你可以做的一个技巧(?)是:
json_encode(array_slice($GLOBALS, 1));
这将跳过 $GLOBALS['GLOBALS'] 并继续对数组的其余部分进行编码。
*编辑: $GLOBALS['GLOBALS'] 在打印这个数组时首先出现在我面前,但更好的方法是找到 $GLOBALS['GLOBALS'] 出现的位置并完全跳过该元素。
关于php - 如何 json_encode $GLOBALS?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23175770/