在c#中的一个http帖子到php后得到表单的输出 在我有的代码
public function actionSubmitInspection(){
$data = $_POST;
return (array)$data["check_comments"];
}
现在我得到了表格的结果
[
"[{\"id\":26,\"comment\":\"89oiu\"},{\"id\":27,\"comment\":\"comment 2\"}]"
]
从我的尝试类型转换数组不创建数组,如何将序列化字符串转换为数组或对象。
答案 0 :(得分:1)
使用json_decode函数。
write-verbose
Out put将是对象数组。
public function actionSubmitInspection(){
$data = $_POST;
// replace it
//return (array)$data["check_comments"];
return json_decode($data["check_comments"]);
}
答案 1 :(得分:1)
从我的尝试类型转换数组不创建数组
是的,它会创建一个数组,但它创建的数组包含JSON文本。
您需要解析JSON以恢复其编码的数据结构。 PHP为此提供了函数json_decode()
。我建议您将TRUE
作为第二个参数传递给json_decode()
以获取数组(否则它会创建stdClass
个对象,这些对象只是具有奇特语法和有限处理选项的数组。
// Assuming the value of $data['check_comments'] is:
// "[{\"id\":26,\"comment\":\"89oiu\"},{\"id\":27,\"comment\":\"comment 2\"}]"
$output = json_decode($data['check_comments']);
print_r($output);
输出:
Array
(
[0] => Array
(
[id] => 26
[comment] => 89oiu
)
[1] => Array
(
[id] => 27
[comment] => comment 2
)
)
答案 2 :(得分:1)
您应该使用json_decode($data["check_comments"])
输出将是 stdClass对象数组:
Array
(
[0] => stdClass Object
(
[id] => 26
[comment] => 89oiu
)
[1] => stdClass Object
(
[id] => 27
[comment] => comment 2
)
)
或在第二个参数true
上传递json_decode($data["check_comments"], true)
,输出将是数组:
Array
(
[0] => Array
(
[id] => 26
[comment] => 89oiu
)
[1] => Array
(
[id] => 27
[comment] => comment 2
)
)