問題:
透過CURL 將多維表單腳本組發佈到PHP 腳本組在數量組不同的主機上會導致“數組到字串轉換”錯誤。由於檔案上傳,curl_setopt() 的第三個參數必須是數組,用於將 Content-Type 標頭設為 multipart/form-data。但是,CURLOPT_POSTFIELDS 似乎不支援多維數組。
解決方案:
儘管 CURLOPT_POSTFIELDS 有限制,但有一個使用 http_build_query_for_curl() 函數的解決方法。此函數遞歸地將多維數組轉換為適合curl_setopt()的平面數組。
範例程式碼:
<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>
輸出:
Array ( [name[first][0]] => Natali [name[first][1]] => Yura )
這個平面數組可以當第三個參數傳遞給curl_setopt(),透過CURL 成功發布多維數組。
以上是如何透過 PHP 和 CURL 發布多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!