如何json_encode $ GLOBALS?(How to json_encode $GLOBA

2019-10-19 23:01发布

我试图调试一个PHP应用程序,并作为调试过程的一部分,我通过通过AJAX请求到我的浏览器的print_r($ GLOBALS)。 不过,我更愿意看到它在本地JSON形式,因为它出来,在浏览器更好。 我尝试使用下面的代码片段:

json_encode($GLOBALS);

但我发现它返回布尔(假)。 该JSON文件说:“如果成功则返回一个JSON编码字符串或FALSE的失败。”但约$ GLOBALS是什么让它失败? 它是递归$ GLOBALS [ 'GLOBALS']?

我想为超过$ GLOBALS替代循环也放到了一个数组,但似乎毫无意义时json_encode的一点是要编码阵列。

Answer 1:

在测试这个自己,似乎json_encode()不能处理递归如什么在$ GLOBALS [“GLOBALS”] ...等提供

(?)所以一招,你可以做的是:

json_encode(array_slice($GLOBALS, 1));

这将跳过$ GLOBALS [“GLOBALS”],继续编码阵列的其余部分。

*编辑:$ GLOBALS [“GLOBALS”]打印该数组时,首先出现的我,但更好的方法是寻找到$ GLOBALS [“GLOBALS”]出现,完全跳过该元素。



Answer 2:

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));


文章来源: How to json_encode $GLOBALS?
标签: php json globals