我试图调试一个PHP应用程序,并作为调试过程的一部分,我通过通过AJAX请求到我的浏览器的print_r($ GLOBALS)。 不过,我更愿意看到它在本地JSON形式,因为它出来,在浏览器更好。 我尝试使用下面的代码片段:
json_encode($GLOBALS);
但我发现它返回布尔(假)。 该JSON文件说:“如果成功则返回一个JSON编码字符串或FALSE的失败。”但约$ GLOBALS是什么让它失败? 它是递归$ GLOBALS [ 'GLOBALS']?
我想为超过$ GLOBALS替代循环也放到了一个数组,但似乎毫无意义时json_encode的一点是要编码阵列。
在测试这个自己,似乎json_encode()不能处理递归如什么在$ GLOBALS [“GLOBALS”] ...等提供
(?)所以一招,你可以做的是:
json_encode(array_slice($GLOBALS, 1));
这将跳过$ GLOBALS [“GLOBALS”],继续编码阵列的其余部分。
*编辑:$ GLOBALS [“GLOBALS”]打印该数组时,首先出现的我,但更好的方法是寻找到$ GLOBALS [“GLOBALS”]出现,完全跳过该元素。
I propose a way where the position of GLOBALS is not important:
json_encode(array_intersect_key($GLOBALS,array_flip(array("_GET", "_POST", "_FILES", "_COOKIE"))));
or a better way:
$new_array = $GLOBALS;
$index = array_search('GLOBALS',array_keys($new_array));
json_encode(array_splice($new_array, $index, $index-1));