Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Curl CURLOPT_POSTFIELDS и многомерный массив


Автор: Sanchezzz 19.12.2012, 11:06
Как  отправить многомерный массив в Curl следуйщего вида
Код

array ( 
 data=> array( price =>200, collection=> array(123,32,4,677,88) )
);

Решение на основе http_build_query($post, '', '&') не подходит, убивает возможность отправить файл если данные переданы как строка  CURLOPT_POSTFIELDS.


 

Автор: Fortop 19.12.2012, 11:11
Цитата(Sanchezzz @  19.12.2012,  11:06 Найти цитируемый пост)
 убивает возможность отправить файл если данные переданы как строка  CURLOPT_POSTFIELDS.

Подробнее с этого момента.

Автор: Sanchezzz 19.12.2012, 11:26
Код

function http_build_query_for( $arrays, &$new_array = array(), $prefix = null ) {
    if ( is_object( $arrays ) )$arrays = get_object_vars( $arrays );
        foreach ( $arrays AS $key => $value ) {
            $k = isset( $prefix ) ? $prefix . '[' . $key . ']' : $key;
            if ( is_array( $value ) OR is_object( $value )  ) {
                http_build_query_for( $value, $new_array, $k );
            } else {
                $new_array[$k] = $value;
        }
    }
}

 smile

Добавлено через 4 минуты и 55 секунд
Fortop, просто если передать как строку мы отправим просто POST данные без multipart/form-data
когда отправляешь массив то ты отсылаешь данные с Content-Type: multipart/form-data

Дело в заголовках.. 
Можно конечно задать еще и в ручную заголовок multipart/form-data как оказалось (.

Автор: Fortop 19.12.2012, 11:51
Можно не только задать заголовок.

http://php.net/manual/en/function.curl-setopt.php#110442

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)