Php json#U编码不';t在数组_拼接返回上起作用,但在直接调用时起作用
我的目标很简单,我想在JSON中解析Php json#U编码不';t在数组_拼接返回上起作用,但在直接调用时起作用,php,arrays,Php,Arrays,我的目标很简单,我想在JSON中解析$GLOBALS变量(记录它)。根据这篇Stackoverflow文章,我必须删除递归变量 以下代码起作用: 它返回string(59)“{”GLOBALS:{”\u GET:[],“\u POST:[],“\u COOKIE:[],“\u FILES:[]}}”(in) 但是我必须使用一个中间变量来存储array\u splice结果。当我这样做时,我不工作: 结果是bool(false),而json\u last\u error\u msg()返回
$GLOBALS
变量(记录它)。根据这篇Stackoverflow文章,我必须删除递归变量
以下代码起作用:
它返回string(59)“{”GLOBALS:{”\u GET:[],“\u POST:[],“\u COOKIE:[],“\u FILES:[]}}”
(in)
但是我必须使用一个中间变量来存储array\u splice
结果。当我这样做时,我不工作:
结果是bool(false)
,而json\u last\u error\u msg()
返回检测到的递归
这两个版本有什么不同?我真的不明白。对我来说,foo(bar())
是与$bar=bar()完全相同的代码;foo($bar)
..我刚刚理解了我的问题,数组拼接的调用
删除了$GLOBALS
变量…但我仍然不明白为什么
我试图将代码放入函数中,因为我认为我的问题是将代码直接放入全局范围:
为什么不使用链接到的问题的解决方案,使用数组切片()
?数组拼接()
返回已删除的元素,而不是数组的其余部分。问题是$global\u array
本身包含一个条目,这是递归的。为什么要使用$index-1
作为拼接长度,而不是1
?如果将代码放在函数中,$global\u数组
将不是全局的,因此它不会在$GLOBALS
中。可以使用数组切片($GLOBALS,0,$index,true)+数组切片($GLOBALS,$index+1,true)
而不是循环。