我正在寻找一种方法将数组中的字符串解析为一个数组,该数组与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那样的数组中。
答案 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}}
参见^它现在是一个字符串。
JSON DECODE
然后当你需要它作为一个数组调用json_decode()
json_decode($data, true);
注意第二个参数是将返回数组设置为true
否则你将得到一个作为对象返回的json。