Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « Conversion de tableau en chaîne » lors de l'envoi de tableaux multidimensionnels dans CURL avec PHP ?

Comment résoudre l'erreur « Conversion de tableau en chaîne » lors de l'envoi de tableaux multidimensionnels dans CURL avec PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-23 08:17:01740parcourir

How to Solve the

Envoi de tableaux multidimensionnels via CURL et PHP

Lors de la publication de données de formulaire contenant des tableaux multidimensionnels à l'aide de CURL, rencontrer une erreur « Conversion de tableau en chaîne » est un problème courant. Cela se produit lorsque vous tentez de définir CURLOPT_POSTFIELDS avec un tableau qui inclut des tableaux.

Étant donné que l'en-tête Content-Type doit être multipart/form-data pour faciliter le transfert de fichiers, convertir le tableau en chaîne de requête ou utiliser http_build_query() n'est pas réalisable. De plus, accéder au code de l'hôte récepteur pour sérialiser et désérialiser le tableau n'est pas une option.

Pour résoudre ce problème, une fonction personnalisée nommée http_build_query_for_curl peut être utilisée. Il parcourt le tableau de manière récursive, le convertissant dans un format adapté aux requêtes CURL POST. Le tableau modifié peut ensuite être attribué à $post et transmis à curl_setopt(), évitant ainsi l'erreur.

Voici le code de la fonction http_build_query_for_curl et un exemple de son utilisation :

<code class="php">function http_build_query_for_curl( $arrays, &amp;$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);</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn