将单维数组转换为CakePHP多维数组

时间:2013-05-28 12:51:53

标签: cakephp

我有一个将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已经在内部完成了这个,有没有办法简单地访问该核心方法并让它将数组转换为多维数组?

2 个答案:

答案 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将是一个多维数组。