假设jQuery序列化表单发送难以解密的数据:
[someindex][0][anotherindex][0][] = 'value'
在PHP中,我需要将其分解为一个真正的数组,即:
array(
someindex => array(
0 => array(
anotherindex => array(
0 => array('value')
)
)
)
)
是否存在执行此操作的功能或如何实现此功能?
编辑:
换句话说,如果我将$name = '[someindex][0][anotherindex][0][]'
作为PHP字符串,我想创建一个结构相同的数组
示例:http://sandbox.onlinephpfunctions.com/code/5d604f087aab07d48be27969e94dc9656fd90ffd HTML客户端:https://jsfiddle.net/bgay81q2/
客户端发送的JSON数据:
[{"name":"Data[index1][0][index2][0][]","value":"test"},{"name":"Data[index1][0][index2][0][]","value":"second value"}]
答案 0 :(得分:1)
您所追求的功能是parse_str。有一个例子说明如何将它与JSON一起使用:
$str = '[
{"name":"Data[index1][0][index2][0][]","value":"test"},
{"name":"Data[index1][0][index2][0][]","value":"second value"}
]';
$input = json_decode($str);
// validate $input here
// then get the data:
parse_str(
implode(
'&',
array_map(
function($var){
return urlencode($var->name) . '=' . urlencode($var->value);
},
$input
)
),
$request
);
print_r($request);
答案 1 :(得分:0)
假设您正在专门讨论jQuery的serialize方法,那么PHP自然会支持这一点; jQuery实现生成URL的查询片段。因此,如果将其附加到GET请求请求URL或在POST正文中发送,则数据将在PHP中显示为$ _GET $ _POST(resp)。
如果您以更深奥的方式将数据走私回PHP,那么您可以使用PHP的parse_str()转换为数组。