使用PHP 和CURL 解決多維數組發布
使用CURL 向遠端PHP 腳本提交表單時,處理時可能會出現問題多維數組數據。由於 CURLOPT_POSTFIELDS 中不支援的結構,經常會出現「陣列到字串轉換」錯誤。
解決這項挑戰的一種方法是使用自訂函數,例如回應中提供的函數:
<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; } } }</code>
該函數接受一個陣列作為輸入並遞歸地展平它,建立一個新數組,其中每個值都分配給一個特定的鍵。透過將要發佈的陣列傳遞給此函數,我們獲得了一個具有與 CURLOPT_POSTFIELDS 相容的結構的修改後的陣列。
<code class="php">$arrays = array( 'name' => array( 'first' => array( 'Natali', 'Yura' ) ) ); http_build_query_for_curl( $arrays, $post );</code>
透過使用具有扁平結構的修改後的 $post 數組,我們可以成功提交透過CURL處理多維數據,不會遇到轉換錯誤:
<code class="php">curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post);</code>
以上是如何透過PHP和CURL提交多維數組資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!