PHP-функция для построения строки запроса из массива – не HTTP-запрос

Привет, я знаю все о http://www.php.net/manual/en/function.http-build-query.php, чтобы сделать это, однако у меня есть небольшая проблема.

Он «ручно» превращает логические значения в единицы и нули для меня. Я создаю небольшую PHP-оболочку для Apache Overflow api и анализирую массив параметров, а затем отправляю его на api, разбивая вещи .. (не нравится 1 для true).

Я бы хотел, чтобы простая функция превратила одномерный массив в строку запроса, но вернула true / false в строковые значения true / false.

Кто-нибудь знает что-нибудь, что может сделать это, прежде чем я начну изобретать колесо

Я ничего не знаю. Я бы рекомендовал сначала перебирать массив и скрывать логические строки, а затем вызвать http_build_query

Например

 foreach($options_array as $key=>$value) : if(is_bool($value) ){ $options_array[$key] = ($value) ? 'true' : 'false'; } endforeach; $options_string=http_build_query($options_array); 

Попробуйте передать http_build_query true и false как строки вместо booleans. Вы можете получить разные результаты.

Если вам просто нужно преобразовать ваш true / false в "true" / "false" :

 function aw_tostring (&$value,&$key) { if ($value === true) { $value = 'true'; } else if ($value === false) { $value = 'false'; } } array_walk($http_query,'aw_tostring'); // ... follow with your http_build_query() call 

Прокрутите каждую переменную строки запроса ($ qs), а если bool true или false, измените значение на строку.

 foreach($qs as $key=>$q) { if($q === true) $qs[$key] = 'true'; elseif($q === false) $qs[$key] = 'false'; } 

Затем вы можете использовать http_build_query()

взгляните на мое колесо:

 function buildSoQuery(array $array) { $parts = array(); foreach ($array as $key => $value) { $parts[] = urlencode($key).'='.(is_bool($value)?($value?'true':'false'):urlencode($value)); } return implode('&', $parts); }