0

我有一个将 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 已经在内部完成了这项工作,是否有某种方法可以简单地访问该核心方法并将数组转换为多维数组?

4

2 回答 2

0

我同意@thaJeztah:表单应该使用标准的 HTTP 'POST' 来发布表单。甚至 jQuery 也可以 POST 表单内容。将表单数据转换为 json 不是标准的。如果你让表单正常 POST,你可以从 $_POST 数组中获取数据。

在任何情况下,您都可以使用 PHP 的 URL 解析函数:

$urlstring = http_build_query($result);
parse_str($urlstring , $result_array);

$result_array 将是一个多维数组。

于 2013-05-28T22:07:11.963 回答
0

假设每个数组都有一定数量的字段,您可以使用 PHP 的array_chunk()

否则,我认为您最好的选择(不幸的是)是像您提到的那样进行迭代。

于 2013-05-28T13:24:42.453 回答