parse_str добавление амперсандов и элементов?

Я играл с cURL, и я пытаюсь отправить массив через переменные POST. Я решил использовать http_build_query для передачи строки, как ожидалось:

curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($sendParams)); 

Я получаю конец просто print_r 'в $ _POST, поэтому я могу видеть, что отправляется.

Тем не менее, я получаю амперсанд, прикрепленный ко всем родительским элементам после первого, это нормально? Я предполагаю, что parse_str используется cURL при анализе запроса, так что здесь приведен пример упрощенного примера, который также приводит к амперсандам:

 <?php $array = array('foo', array('bar' => array('baz' => array(1,2,3))), 'test' => array(2,3,4)); parse_str(http_build_query($array), $vars); print_r($vars); ?> 

Возвращает:

 Array ( [0] => foo [amp;1] => Array ( [bar] => Array ( [baz] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) ) [amp;test] => Array ( [0] => 2 [1] => 3 [2] => 4 ) ) 

Кажется, я ответил на свой вопрос … parse_str путается с помощью &, и мне нужно сначала запустить html_entity_decode , прежде чем html_entity_decode .