PHP函数从数组生成查询字符串-而不是http生成查询
你好,我知道所有要做的事情,但是我有一个小问题 对我来说,它“巧妙地”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小PHP包装器,并解析一个选项数组,然后将其发送到api上,这会破坏一些东西(不喜欢1为真) 我想要的是一个简单的函数,将一维数组转换为查询字符串,但将true/false转换为true/false的字符串值PHP函数从数组生成查询字符串-而不是http生成查询,php,Php,你好,我知道所有要做的事情,但是我有一个小问题 对我来说,它“巧妙地”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小PHP包装器,并解析一个选项数组,然后将其发送到api上,这会破坏一些东西(不喜欢1为真) 我想要的是一个简单的函数,将一维数组转换为查询字符串,但将true/false转换为true/false的字符串值 在我开始重新发明轮子之前,任何人都知道有什么可以做到这一点尝试将http_build_查询true和false作为字符串而不是布尔值传递。你可能会
在我开始重新发明轮子之前,任何人都知道有什么可以做到这一点尝试将http_build_查询true和false作为字符串而不是布尔值传递。你可能会得到不同的结果。我现在还不知道什么。我建议首先遍历数组并将布尔值转换为字符串,然后调用
http\u build\u query
例如
循环查询字符串($qs)的每个变量,如果bool为true或false,则将值更改为string
foreach($qs as $key=>$q) {
if($q === true) $qs[$key] = 'true';
elseif($q === false) $qs[$key] = 'false';
}
然后,如果您只需要将
true
/false
转换为“true”
/“false”
,则可以使用http\u build\u 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);
}
是的,当然。作为一个白痴…漫长的一天。我现在要关掉电脑。
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
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);
}