ホームページ >バックエンド開発 >PHPチュートリアル >PHP および CURL 経由で多次元配列データを送信するにはどうすればよいですか?
PHP と CURL を使用した多次元配列の投稿の解決
CURL を使用してフォームをリモート PHP スクリプトに送信すると、次の処理を行うときに問題が発生する可能性があります。多次元配列データ。 「配列から文字列への変換」エラーは、CURLOPT_POSTFIELDS でサポートされていない構造が原因で発生することがよくあります。
この課題に取り組む 1 つの方法は、応答で提供されるカスタム関数を利用することです。
<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>
この関数は配列を入力として受け取り、それを再帰的に平坦化し、各値が特定のキーに割り当てられる新しい配列を作成します。ポストする配列をこの関数に渡すことで、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 サイトの他の関連記事を参照してください。