我有一个将JSON编码数据发布到Controller函数的表单,其原因是表单是动态的,可能包含许多元素,受Php配置的限制。
我在控制器中检索JSON数据没有问题,我可以使用以下方法将其解码为数组:
$result = json_decode($this->request->data['Address']['result'], true);
然而,我的问题是结果数据采用以下格式:
array(
'data[Address][id][0][2087]' => '2087',
'data[Address][id][0][2680]' => '2680',
'data[Address][id][1][3168]' => '3168',
'data[Address][id][1][3911]' => '3911',
'data[Address][id][2][1818]' => '1818',
);
但是,我想将其转换为CakePHP数组样式,即:
array(
'data' => array(
'Address' => array(
'id' => array(
0 => array(
2087 => '2087',
2680 => '2680
),
1 => array(
3168 => '3168',
3911 => '3911'
)
)
)
)
)
我意识到这可以通过对数组进行迭代来完成,但是由于CakePHP已经在内部完成了这个,有没有办法简单地访问该核心方法并让它将数组转换为多维数组?
答案 0 :(得分:0)
假设每个数组都有一定数量的字段,您可以使用PHP的array_chunk()。
否则,我认为你最好的选择(不幸的是)就像你提到的那样迭代。
答案 1 :(得分:0)
我同意@thaJeztah:表格应该使用标准HTTP“POST”来发布表单。甚至jQuery也可以发布表单内容。将表单数据转换为json不是标准的。如果您正常使用表单POST,则可以从$ _POST数组中获取数据。
在任何情况下,您都可以使用PHP的URL解析功能:
$urlstring = http_build_query($result);
parse_str($urlstring , $result_array);
$ result_array将是一个多维数组。