Размещать данные PHP-массив в массиве

Я предполагаю, что этот вопрос связан с моим непониманием массивов в PHP.

Обычно я пытаюсь отправить запрос на публикацию в php с помощью curl, однако я хочу, чтобы почтовый орган выглядел примерно так:

{
"deliveryAddress":[
{
"ID":"5",
"address":"[email protected]",
"method":"EMAIL",
"checkbox":true,
"flashlight":false
},
{
"ID":"7",
"address":"[email protected]",
"method":"EMAIL",
"checkbox":true,
"flashlight":false
}
]
}

Примерно так это выглядит в API, поэтому, если я добавлю это в программу наподобие Fiddler, она будет работать отлично. Однако, превратив это в пост-тело в PHP, я столкнулся с большими трудностями. Вот моя лучшая попытка:

$postData = array(
'deliveryAddress' => array(
'ID'=>  '5',
'address'=>  '[email protected]',
'method'=>  'EMAIL',
'checkbox'=>  true,
'flashlight'=>  false,

'ID'=>  '7',
'address'=>  '[email protected]',
'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);

Ясно, что я делаю постданные неправильно, но я не уверен, как это структурировать. Любая помощь будет отличной. Спасибо.

1

Решение

DeliveryAddress это массив объектов (после кодирования в JSON)

Так что если вы хотите разместить данные в соответствии с JSON, который вы написали в качестве примера, тогда массив PHP должен быть построен следующим образом:

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

array (
'ID'=>  '5',
'address'=>  '[email protected]',
'method'=>  'EMAIL',
'checkbox'=>  true,
'flashlight'=>  false
),

array (
'ID'=>  '7',
'address'=>  '[email protected]',
'method'=>  'EMAIL',
'checkbox'=>  true,
'flashlight'=>  false
)

)
);

Обратите внимание, что на «стороне PHP» deliveryAddress теперь массив ассоциативных массивов (которые когда-то json_encoded превратится в массив объектов).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]