ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して CURL で多次元配列を送信するときに発生する「配列から文字列への変換」エラーを解決する方法

PHP を使用して CURL で多次元配列を送信するときに発生する「配列から文字列への変換」エラーを解決する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-23 08:17:01744ブラウズ

How to Solve the

CURL および PHP を介した多次元配列の送信

CURL を使用して多次元配列を含むフォーム データを送信すると、「配列から文字列への変換」エラーが発生することがよくあります。これは、配列を含む配列で CURLOPT_POSTFIELDS を設定しようとすると発生します。

ファイル転送を容易にするために Content-Type ヘッダーは multipart/form-data である必要があるため、配列をクエリ文字列に変換するか http_build_query() を使用します。実現不可能です。さらに、配列をシリアル化およびシリアル化解除するために受信ホストのコードにアクセスすることはできません。

この問題を解決するには、http_build_query_for_curl という名前のカスタム関数を使用できます。配列を再帰的に反復処理し、CURL POST リクエストに適した形式に変換します。変更した配列を $post に割り当て、curl_setopt() に渡すことで、エラーを回避できます。

http_build_query_for_curl 関数のコードとその使用例は次のとおりです。

<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>

以上がPHP を使用して CURL で多次元配列を送信するときに発生する「配列から文字列への変換」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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