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