Post multidimensional array using CURL and get the result on server

后端 未结 3 1165
情书的邮戳
情书的邮戳 2020-12-11 03:23

I am sending data from my local machine to server using CURL. And the data is multidimensional array.

Array
(
[0] => stdClass Object
    (
           


        
相关标签:
3条回答
  • 2020-12-11 03:36

    cURL can only accept a simple key-value paired array where the values are strings, it can't take an array like yours which is an array of objects. However it does accept a ready made string of POST data, so you can build the string yourself and pass that instead:

    $str = http_build_query($array);
    
    ...
    
    curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
    

    A print_r($_POST) on the receiving end will show:

    Array
    (
        [0] => Array
            (
                [id] => 1
            )
    
        [1] => Array
            (
                [id] => 0
            )
    
        [2] => Array
            (
                [id] => 11
            )
    
    )
    
    0 讨论(0)
  • 2020-12-11 03:56
    $param['sub_array'] = json_encode($sub_array);
    

    and on the other side

    $sub_array= json_decode($_POST['sub_array']);
    
    0 讨论(0)
  • 2020-12-11 03:58

    I would give a go to serialize and unserialize:

    1) Before sending your array, serialize it (and set your transfer mode to binary):

    (...)
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);           // need this to post serialized data
    curl_setopt($ch, CURLOPT_POSTFIELDS, serialize($array));  // $array is my above data
    

    2) When you receive the data, unserialize it:

    $array = unserialize($_POST);
    

    More details here and here

    0 讨论(0)
提交回复
热议问题