Привет, я знаю все о 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); }