2012-06-11 2 views
1

Можно ли отправить многоассоциативный массив на страницу, используя cURL в php?PHP cURL можно передать многоассоциативный массив?

Я могу передать массив, но происходит следующее:

// Open Connection 
    $ch = curl_init(); 

    // Set the URL 
    curl_setopt($ch, CURLOPT_URL, $this->config['submission']['eyerys']); 

    // Set the number of fields being sent: 
    curl_setopt($ch,CURLOPT_POST,count($this->call['info'])); 

    // The string to send: 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$string); 

    // Return transfer: 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    // SSL verification: 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

    // Execute the post: 
    $result = curl_exec($ch); 

    $this->pre($result); 

    // Close connection: 
    $curl_close($ch); 

я получаю следующий результат:

Array 
(
     [info] => Array 
     [answers] => Array 
     [errors] => Array 
) 

ответ

1

Неа, так как завиток не может знать, как вы хотите кодировать его. Не каждый серверный язык/структура использует тот же путь. Я думаю, что PHP - это единственный язык, на котором пользователь может создать массив, просто отправив данные с ключами, содержащими []. Например. в мире python можно просто отправить одно и то же значение дважды, а затем использовать другую функцию (например, .getlist('key') - в зависимости от структуры), чтобы получить доступ к массиву, а не только к одному значению.

Если у вас есть контроль над удаленным скриптом, рассмотрите возможность использования чего-то стандартизованного, такого как JSON. Вместо отправки форматированной строки POST либо отправляйте чистую часть JSON, либо одно форматированное POST-значение, содержащее JSON.

Если вы этого не сделаете, вам, скорее всего, придется кодировать данные POST самостоятельно.

Смежные вопросы