Я много публикую через PHP CURL. Как правило, мы отправляем на серверы, которые ожидают прямой HTTP POST или JSON. Итак, мы строим параметры в виде массива... а затем json_encode массив или http_build_query массив... и публикуем результат в CURLOPT_POSTFIELDS. Кто-то запрограммировал для нас несколько веб-страниц... и они разместили данные формы через дополнительную страницу, отправив массив $_POST на наш сервер... и это сработало! Конечно, достаточно, я посмотрел спецификации для CURLOPT_POSTFIELDS... и он может принимать строку или массив. Итак, я запутался... почему кажется, что протокол должен преобразовать массив в строку с помощью http_build_query, когда можно просто опубликовать массив (по крайней мере, если он одномерный)? Это только из-за побочного преимущества кодирования URL-адреса http_build_query.... или есть другая причина?
P.S. Когда массив содержал параметр, который был полным URL-адресом, то есть с запросом, например http://example.com?a=1&b=2&c=3 сервер нормально считывает данные, даже если параметр не был закодирован в URL-адресе... или публикация массива автоматически кодирует элементы массива?