您好我知道所有关于http://www.php.net/manual/en/function.http-build-query.php的事情,但我有一点问题。
它“handly”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小的PHP包装器并解析一个选项数组,然后将它发送到api中断的东西..(不喜欢1表示真的)。
我想要的是将单维数组转换为查询字符串但将true / false转换为字符串值true / false的简单函数。
在开始重新发明轮子之前,任何人都知道任何可以做到的事情
答案 0 :(得分:4)
我不知道任何事情。我建议首先迭代数组并将布尔值转换为字符串,然后调用http_build_query
E.g。
foreach($options_array as $key=>$value) :
if(is_bool($value) ){
$options_array[$key] = ($value) ? 'true' : 'false';
}
endforeach;
$options_string=http_build_query($options_array);
答案 1 :(得分:1)
尝试将http_build_query true和false作为字符串而不是布尔值传递。您可能会得到不同的结果。
答案 2 :(得分:1)
如果您只需要将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
答案 3 :(得分:0)
遍历查询字符串的每个变量($ qs),如果bool为true或false,则将值更改为string。
foreach($qs as $key=>$q) {
if($q === true) $qs[$key] = 'true';
elseif($q === false) $qs[$key] = 'false';
}
然后您可以使用http_build_query()
答案 4 :(得分:0)
看看我的车轮:
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);
}