Maison  >  Article  >  développement back-end  >  Comment éviter l'« Erreur de conversion de tableau en chaîne » lors de la publication de tableaux multidimensionnels via PHP et CURL ?

Comment éviter l'« Erreur de conversion de tableau en chaîne » lors de la publication de tableaux multidimensionnels via PHP et CURL ?

DDD
DDDoriginal
2024-10-23 08:12:02390parcourir

How to Avoid the

Publication de tableaux multidimensionnels avec PHP et CURL

Lorsqu'ils tentent de soumettre des données à partir d'un formulaire via CURL, les utilisateurs peuvent rencontrer l'erreur « Erreur de conversion de tableau en chaîne ». Cela se produit lors de la publication de tableaux multidimensionnels sur un script PHP exécuté sur un autre serveur. Étant donné que CURLOPT_POSTFIELDS nécessite un tableau, les utilisateurs ne peuvent pas utiliser de méthodes traditionnelles telles que http_build_query().

Solution

Pour résoudre ce problème, une fonction personnalisée appelée "http_build_query_for_curl" est nécessaire. Cette fonction parcourt le tableau multidimensionnel et le convertit dans un format adapté à CURL.

<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;
        }
    }
}</code>

Utilisation

Pour utiliser cette fonction, attribuez le tableau multidimensionnel à une variable et transmettez-la en premier argument à la fonction. Le deuxième argument est un tableau vide qui contiendra les données converties. Le troisième argument est facultatif et spécifie le préfixe des clés du tableau.

<code class="php">$arrays = array(
    'name' => array(
        'first' => array(
            'Natali', 'Yura'
        )
    )
);


http_build_query_for_curl( $arrays, $post );

print_r($post);</code>

La sortie de ce code est :

Array
(
    [name[first][0]] => Natali
    [name[first][1]] => Yura
)

Ce tableau converti peut désormais être utilisé avec CURLOPT_POSTFIELDS sans rencontrer le erreur de conversion.

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