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

PHP および CURL 経由で多次元配列データを送信するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-23 08:19:29843ブラウズ

How to Submit Multidimensional Array Data via PHP and CURL?

PHP と CURL を使用した多次元配列の投稿の解決

CURL を使用してフォームをリモート PHP スクリプトに送信すると、次の処理を行うときに問題が発生する可能性があります。多次元配列データ。 「配列から文字列への変換」エラーは、CURLOPT_POSTFIELDS でサポートされていない構造が原因で発生することがよくあります。

この課題に取り組む 1 つの方法は、応答で提供されるカスタム関数を利用することです。

<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;
        }
    }
}</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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。