使用CURL发布多维数组并在服务器上获取结果

Yog*_*har 7 php arrays curl multidimensional-array

我正在使用本地机器向服务器发送数据CURL.而数据是多维数组.

Array
(
[0] => stdClass Object
    (
        [id] => 1
    )
[1] => stdClass Object
    (
        [id] => 0
    )
[2] => stdClass Object
    (
        [id] => 11
    )
)
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码发送数据.

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "my_url");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);  // $array is my above data
Run Code Online (Sandbox Code Playgroud)

但是在服务器上,当我尝试将这些传入的数据放到文件中时,或者只是print_r它给了我以下输出

Array
(
[0] => Array
[1] => Array
[2] => Array
)
Run Code Online (Sandbox Code Playgroud)

但我想要多维输出.

我试过print_r($_POST[0])但它只提供Array文字.

MrC*_*ode 22

cURL只能接受一个简单的键值配对数组,其中值是字符串,它不能像你的数组那样是一个对象数组.但它确实接受现成的POST数据字符串,因此您可以自己构建字符串并传递它:

$str = http_build_query($array);

...

curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
Run Code Online (Sandbox Code Playgroud)

print_r($_POST)接收端的A 将显示:

Array
(
    [0] => Array
        (
            [id] => 1
        )

    [1] => Array
        (
            [id] => 0
        )

    [2] => Array
        (
            [id] => 11
        )

)
Run Code Online (Sandbox Code Playgroud)