在数组中发布数据PHP数组

时间:2018-01-26 13:41:25

标签: php arrays curl postdata

我认为这个问题是由于我对PHP中的数组缺乏了解。

一般情况下,我正在尝试使用curl在php中发送帖子请求,但我希望帖子看起来像这样:

{
   "deliveryAddress":[
      {
         "ID":"5",
         "address":"example@example2.com",
         "method":"EMAIL",
         "checkbox":true,
         "flashlight":false
      },
      {
         "ID":"7",
         "address":"example45@example3.com",
         "method":"EMAIL",
         "checkbox":true,
         "flashlight":false
      }
   ]
}

在API中看起来大致如此,所以如果我将它放入像Fiddler这样的程序中,它的效果非常好。然而,在PHP中将其转换为postbody我有更多困难。到目前为止,这是我最好的尝试:

$postData = array(
    'deliveryAddress' => array(
    'ID'=>  '5',
    'address'=>  'example@example2.com',
    'method'=>  'EMAIL',
    'checkbox'=>  true,
    'flashlight'=>  false,

    'ID'=>  '7',
    'address'=>  'example45@example3.com',
    'method'=>  'EMAIL',
    'checkbox'=>  true,
    'flashlight'=>  false,



    )

);

$url = "ServerIamSendingItTo";
$ch = curl_init();

$headers = array(

    'Content-Type: application/json',
    'Authorization: BASIC (mybase64encodedpass)=='
);





curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

curl_setopt($ch, CURLOPT_URL, $url);



$result = curl_exec($ch);

$ch_error = curl_error($ch);

if ($ch_error) {

   echo"ERROR";
   curl_close($ch);

} else {


     var_dump($result);

}
curl_close($ch);

显然我做错了postdata,但我不知道如何构建它。任何帮助都会很棒。谢谢。

1 个答案:

答案 0 :(得分:2)

DeliveryAddress是一个对象数组(一旦JSON编码)

因此,如果您想根据您编写的JSON发布数据,那么PHP数组必须以这种方式构建:

$postData = array(
    'deliveryAddress' => array(

        array (
            'ID'=>  '5',
            'address'=>  'example@example2.com',
            'method'=>  'EMAIL',
            'checkbox'=>  true,
            'flashlight'=>  false
            ),

        array (
            'ID'=>  '7',
            'address'=>  'example45@example3.com',
            'method'=>  'EMAIL',
            'checkbox'=>  true,
            'flashlight'=>  false
        )

    )
);

请注意,在“PHP方面”deliveryAddress现在是一个关联数组数组(一旦json_encoded将转换为一个对象数组)。