Ao postar dados de formulário contendo matrizes multidimensionais usando CURL, encontrar um erro "Conversão de matriz em string" é um problema comum. Isso ocorre ao tentar definir CURLOPT_POSTFIELDS com um array que inclui arrays.
Como o cabeçalho Content-Type deve ser multipart/form-data para facilitar a transferência de arquivos, convertendo o array em uma string de consulta ou usando http_build_query() não é viável. Além disso, acessar o código do host receptor para serializar e desserializar a matriz não é uma opção.
Para resolver esse problema, uma função personalizada chamada http_build_query_for_curl pode ser empregada. Ele itera recursivamente pelo array, convertendo-o em um formato adequado para solicitações CURL POST. O array modificado pode então ser atribuído a $post e passado para curl_setopt(), evitando o erro.
Aqui está o código para a função http_build_query_for_curl e um exemplo de seu uso:
function http_build_query_for_curl( $arrays, &$new = 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_curl( $value, $new, $k );
} else {
$new[$k] = $value;
}
}
}
$arrays = array(
'name' => array(
'first' => array(
'Natali', 'Yura'
)
)
);
http_build_query_for_curl( $arrays, $post );
print_r($post);
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3