「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP を使用して CURL で多次元配列を送信するときに発生する「配列から文字列への変換」エラーを解決する方法

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

2024 年 11 月 6 日に公開
ブラウズ:811

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 関数のコードとその使用例は次のとおりです:

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

$arrays = array(
    'name' => array(
        'first' => array(
            'Natali', 'Yura'
        )
    )
);


http_build_query_for_curl( $arrays, $post );

print_r($post);
リリースステートメント この記事は次の場所に転載されています: 1729642519 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3