ホームページ > バックエンド開発 > PHPチュートリアル > PHP と CURL 経由で多次元配列をポストするにはどうすればよいですか?

PHP と CURL 経由で多次元配列をポストするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-23 08:16:02
オリジナル
518 人が閲覧しました

How to Post Multidimensional Arrays via PHP and CURL?

PHP と CURL を使用した多次元配列のポスト

問題:

CURL を介した多次元フォーム配列の PHP スクリプトへのポスト別のホスト上で実行すると、「配列から文字列への変換」エラーが発生します。ファイルのアップロードにより Content-Type ヘッダーを multipart/form-data に設定するには、curl_setopt() の 3 番目の引数は配列である必要があります。ただし、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
)
ログイン後にコピー

このフラット配列は、3 番目の引数としてcurl_setopt() に渡すことができ、CURL 経由で多次元配列を正常に送信できます。

以上がPHP と CURL 経由で多次元配列をポストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート