PHP函数从数组生成查询字符串-而不是http生成查询

PHP函数从数组生成查询字符串-而不是http生成查询,php,Php,你好,我知道所有要做的事情,但是我有一个小问题 对我来说,它“巧妙地”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小PHP包装器,并解析一个选项数组,然后将其发送到api上,这会破坏一些东西(不喜欢1为真) 我想要的是一个简单的函数,将一维数组转换为查询字符串,但将true/false转换为true/false的字符串值 在我开始重新发明轮子之前,任何人都知道有什么可以做到这一点尝试将http_build_查询true和false作为字符串而不是布尔值传递。你可能会

你好,我知道所有要做的事情,但是我有一个小问题

对我来说,它“巧妙地”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小PHP包装器,并解析一个选项数组,然后将其发送到api上,这会破坏一些东西(不喜欢1为真)

我想要的是一个简单的函数,将一维数组转换为查询字符串,但将true/false转换为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);
}