Apabila menyiarkan data borang yang mengandungi tatasusunan berbilang dimensi menggunakan CURL, menghadapi ralat "Penukaran Tatasusunan kepada rentetan" adalah masalah biasa. Ini berlaku apabila cuba menetapkan CURLOPT_POSTFIELDS dengan tatasusunan yang termasuk tatasusunan.
Memandangkan pengepala Jenis Kandungan mestilah berbilang bahagian/data-bentuk untuk memudahkan pemindahan fail, menukar tatasusunan kepada rentetan pertanyaan atau menggunakan http_build_query() tidak boleh dilaksanakan. Selain itu, mengakses kod hos penerima untuk mensiri dan menyahsiri tatasusunan bukanlah pilihan.
Untuk menyelesaikan isu ini, fungsi tersuai bernama http_build_query_for_curl boleh digunakan. Ia berulang secara berulang melalui tatasusunan, menukarnya kepada format yang sesuai untuk permintaan CURL POST. Tatasusunan yang diubah suai kemudiannya boleh diberikan kepada $post dan diserahkan kepada curl_setopt(), mengelakkan ralat.
Berikut ialah kod untuk fungsi http_build_query_for_curl dan contoh penggunaannya:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Array to String Conversion\' Apabila Menghantar Array Multidimensi dalam CURL dengan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!