Невозможно передать массив через CURL? - PullRequest
0 голосов
/ 17 мая 2018
$items[] = array("sku"=>"data","name"=>"data","amount"=>0,"qty"=>"0","id"=>"data","price"=>0,"url"=>"data");

$post = array(
'data' => 'data',
            'items' => $items);

$ch = curl_init('urltopost');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3); //timeout in seconds
header('Content-Type: text/html');
echo curl_exec($ch);

// Check if any error occurred
if(curl_errno($ch))
{
     header('Location: error');
     die();
}

Если я отправлю это себе и сделаю var_dump($_POST["items"]);, я просто получу string(5) "Array" в качестве вывода.

Я также попытался выполнить цикл foreach, который не выводил данных.

Я что, глупый и что-то явно не так?

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете попробовать это

$post = [];
foreach($items as $index=>$item){
    $new_key = "item[$index]";
    foreach($item as $k=>$v){
        $post[$new_key.'['. $k .']'] = $v;
    }

}
$post['data'] = 'data';

Формат пост-массива array('key'=>string, ....), он не разрешает массив.Если вы хотите разместить массив, формат ключа 'key[index1][index2] ...'.На сервере вы получите $_POST['key'] в виде массива.

...