ホームページ >バックエンド開発 >PHPチュートリアル >PHP および CURL 経由で多次元配列を送信するときに「配列から文字列への変換エラー」を回避するにはどうすればよいですか?

PHP および CURL 経由で多次元配列を送信するときに「配列から文字列への変換エラー」を回避するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-23 08:12:02453ブラウズ

How to Avoid the

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

CURL を介してフォームからデータを送信しようとすると、「配列から文字列への変換エラー」が発生する場合があります。これは、別のサーバーで実行されている PHP スクリプトに多次元配列をポストするときに発生します。 CURLOPT_POSTFIELDS には配列が必要なため、ユーザーは http_build_query() などの従来のメソッドを利用できません。

解決策

この問題を解決するには、「http_build_query_for_curl」というカスタム関数が必要です。この関数は、多次元配列を走査し、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;
        }
    }
}</code>

使用法

この関数を利用するには、多次元配列を変数に代入し、最初の変数として渡します。関数の引数。 2 番目の引数は、変換されたデータを保持する空の配列です。 3 番目の引数はオプションで、配列キーのプレフィックスを指定します。

<code class="php">$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
)

この変換された配列は、CURLOPT_POSTFIELDS で使用できるようになりました。変換エラー。

以上がPHP および CURL 経由で多次元配列を送信するときに「配列から文字列への変換エラー」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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