【发布时间】:2018-03-01 18:13:17
【问题描述】:
我正在使用这组数据进行 Ajax 调用:
"type":"alter",
"param":{
"key1":"value1",
"key2":"value2"
}
在 PHP 中,我通过以下方式处理:
• 获取file_get_contents('php://input'):
type=alter¶m%5Bkey1%5D=value1¶m%5Bkey2%5D=value2
• 由& 对 URL 进行解码和切片:
[
"type=alter",
"param[key1]=value1",
"param[key2]=value2"
]
• 由= 进一步切片:
[
[
"type",
"alter"
],
[
"param[key1]",
"value1"
],
[
"param[key2]",
"value2"
]
]
• 然后创建一个对象$data,每个索引0作为键,索引1作为值:
$data = array(
"type"=>"alter",
"param[key1]"=>"value1",
"param[key2]"=>"value2"
)
问题:
当我在 Ajax 中的数据集严格为 key=value 时,这不是问题,但当我添加数组或对象作为值时,它会变得混乱。我想处理出现在 Ajax 中的 PHP 数据集。我想要的结果是:
$data = array(
"type"=>"alter",
"param"=>array(
"key1"=>"value1",
"key2"=>"value2"
)
)
这样当我得到$data['param'] 时,它会给我所有的参数键。我可以手动完成,但我认为可能有更简单的方法可以做到这一点。特别是如果我可以立即从file_get_contents('php://input') 获得我想要的对象。
【问题讨论】:
-
您这样做是否有原因可能是最复杂的方式?当然使用
$_GET(或$_POST)和json_decode会更容易? -
这和 JSON 有什么关系?
-
您的数据是表单 url 编码的。您可以直接从
$_POST读取它,它将被自动解析。 -
我正在使用
file_get_contents('php://input'),因为我返回的数据普遍用于 GET、POST、PUT 和 DELETE 方法。 @iainn .. 谢谢!这正是我想要的!
标签: php arrays json object url