Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从URL获取JSON_Php_Arrays_Json_Object_Url - Fatal编程技术网

如何在PHP中从URL获取JSON

如何在PHP中从URL获取JSON,php,arrays,json,object,url,Php,Arrays,Json,Object,Url,我正在使用这组数据进行Ajax调用: "type":"alter", "param":{ "key1":"value1", "key2":"value2" } 在PHP中,我通过以下方式处理此问题: •获取文件\u获取\u内容('php://input): •通过和对URL进行解码和切片: [ "type=alter", "param[key1]=value1", "param[key2]=value2" ] •通过=,进一步对每一个进行切片: [

我正在使用这组数据进行Ajax调用:

"type":"alter",
"param":{
    "key1":"value1",
    "key2":"value2"
}
在PHP中,我通过以下方式处理此问题:

•获取
文件\u获取\u内容('php://input)

•通过
对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
时,这不是问题,但当我添加数组或对象作为值时,它会变得混乱。我想用PHP处理Ajax中显示的数据集。我期望的结果是:

$data = array(
    "type"=>"alter",
    "param"=>array(
        "key1"=>"value1",
        "key2"=>"value2"
    )
)

因此,当我获得
$data['param']
时,它将给我所有的参数键。我可以手动完成,但我认为可能有一种更简单的方法。尤其是如果我可以从
文件获取所需的对象php://input)
马上。

有一个内置函数来解析参数字符串:


您这样做的原因可能是最复杂的方式吗?当然,使用
$\u GET
(或
$\u POST
)和
json\u decode
)会更容易些?这与json有什么关系?您的数据是表单url编码的。您可以直接从
$\u POST
中读取它,在那里它将被自动解析php://input)
因为我得到的数据普遍用于get、POST、PUT和DELETE方法@伊恩。。谢谢那正是我要找的!
$data = array(
    "type"=>"alter",
    "param"=>array(
        "key1"=>"value1",
        "key2"=>"value2"
    )
)
<?php
$in = 'type=alter&param%5Bkey1%5D=value1&param%5Bkey2%5D=value2';

parse_str($in, $data);

print_r($data);

/*
Array
(
    [type] => alter
    [param] => Array
        (
            [key1] => value1
            [key2] => value2
        )

)
*/
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_POST)) {
        parse_str(file_get_contents('php://input'), $_POST);
    }

    print_r($_POST);

    /*
    Array
    (
        [type] => alter
        [param] => Array
            (
                [key1] => value1
                [key2] => value2
            )

    )

    */
}