将字符串解析为类似CakePHP表单数据的数组

时间:2017-04-19 20:50:10

标签: php arrays cakephp cakephp-2.5

我正在寻找一种方法将数组中的字符串解析为一个数组,该数组与CakePHP处理POST数据的方式类似。甚至是CakePHP中的一个功能就可以做到。

更新:

当前数组:

array(
    'data[callers]' => (int) 4,
    'data[status]' => 'Unknown',
    'data[country_id][107]' => (int) 1,
    'data[country_id][150]' => (int) 0
)

期望的结果:

array(
    'callers' => (int) 4,
    'status' => 'Unknown',
    'country_id' => array(
        (int) 107 => (int) 1,
        (int) 150 => (int) 0
    )
)

目的是保存序列化的表单数据,以后可以将其传递给PHP函数,而无需从浏览器POST数据。

数据来自一个序列化并保存在数据库中的表单。 CakePHP在表单中生成输入名称,括号如下:data[country_id][107]在控制器内部,您可以像$this->request->data['country_id']['107']一样访问它 但是当我使用javascript序列化表单并将原始JSON字符串保存在数据库中时,我需要一种方法将其放入像CakePHP那样的数组中。

1 个答案:

答案 0 :(得分:1)

首先确保您的数组首先有效,如:

$data = array (
    'callers' => 4,
    'status' => 'Unknown',
    'country_id' => array(
        '107' => 0,
        '150' => 0
    )
);

JSON ENCODE

现在你可以对它进行json编码

 $json = json_encode($data);
 echo $json; // prints: {"callers":4,"status":"Unknown","country_id":{"107":0,"150":0}}

参见^它现在是一个字符串。

  

http://php.net/manual/en/function.json-encode.php

JSON DECODE

然后当你需要它作为一个数组调用json_decode()

json_decode($data, true);

注意第二个参数是将返回数组设置为true否则你将得到一个作为对象返回的json。

  

http://php.net/manual/en/function.json-decode.php