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