jQuery中有一个函数$.param
,它接受一个对象(也可以是嵌套对象)并将其转换为适合GET
用法的字符串。
我想知道是否有一个PHP函数会接受该字符串并将其转换回数组(或嵌套数组,如果是这种情况)。有这样的功能吗?
编辑:
我发送这个JS对象(在$.param()
之后):
{"categories": [90000]}
我从$_GET
在服务器端阅读,然后将其传递给parse_str
。
我还有一个重新创建预期PHP数组的测试代码。
整个事情看起来像:
$filter = $_GET["my_array"];
parse_str($filters, $_filters);
error_log(print_r($_filters, true), 4);
$x = [
"categories" => [
90000
]
];
error_log(print_r($x, true), 4);
该代码的输出是:
(
[categories] => Array
(
[0] => 90000
)
)
(
[categories] => Array
(
[0] => 90000
)
)
所以我认为它们是相同的。但随后我将该数组传递给Yii的findAll
方法,并且它只与$x
一起使用。
也许parse_str
在解析时混合普通数组和关联数组,这就是为什么findAll
不起作用?
答案 0 :(得分:4)
我想你可能正在寻找Jon Stirling提到的parse_url
或parse_str
。
请记住,所有查询参数都已存在于$_GET
全局。
URL的查询部分的用法。
var_dump(parse_url($url, PHP_URL_QUERY));
答案 1 :(得分:1)
是的,您可以使用parse_str
:
$serializedData = $_GET['data'];
$unserializedData = array();
parse_str($serializedData, $unserializedData);
print_r($unserializedData);