Maison >développement back-end >tutoriel php >Comment publier des tableaux multidimensionnels via PHP et CURL ?

Comment publier des tableaux multidimensionnels via PHP et CURL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-23 08:16:02520parcourir

How to Post Multidimensional Arrays via PHP and CURL?

Publication de tableaux multidimensionnels avec PHP et CURL

Problème :

Publication d'un tableau de formulaire multidimensionnel via CURL dans un script PHP sur un autre hôte entraîne une erreur « Conversion de tableau en chaîne ». Le troisième argument de curl_setopt() doit être un tableau pour définir l'en-tête Content-Type sur multipart/form-data en raison du téléchargement de fichier. Cependant, il semble que CURLOPT_POSTFIELDS ne prenne pas en charge les tableaux multidimensionnels.

Solution :

Malgré la limitation de CURLOPT_POSTFIELDS, il existe une solution de contournement utilisant la fonction http_build_query_for_curl(). Cette fonction convertit de manière récursive un tableau multidimensionnel en un tableau plat adapté à curl_setopt().

Exemple de code :

<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>

Sortie :

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

Ce tableau plat peut ensuite être transmis à curl_setopt() comme troisième argument, publiant avec succès le tableau multidimensionnel via CURL.

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