ホームページ >バックエンド開発 >PHPチュートリアル >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, &$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 サイトの他の関連記事を参照してください。