首頁 >後端開發 >php教程 >如何透過 PHP 和 CURL 發布多維數組?

如何透過 PHP 和 CURL 發布多維數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-23 08:16:02520瀏覽

How to Post Multidimensional Arrays via PHP and CURL?

使用PHP 和CURL 發布多維數組

問題:

透過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, &amp;$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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn