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, &$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!