PHP函数从数组构建查询字符串 - 而不是http构建查询

时间:2010-07-05 19:48:49

标签: php

您好我知道所有关于http://www.php.net/manual/en/function.http-build-query.php的事情,但我有一点问题。

它“handly”将布尔值转换为1和0。我正在为Stack Overflow api构建一个小的PHP包装器并解析一个选项数组,然后将它发送到api中断的东西..(不喜欢1表示真的)。

我想要的是将单维数组转换为查询字符串但将true / false转换为字符串值true / false的简单函数。

在开始重新发明轮子之前,任何人都知道任何可以做到的事情

5 个答案:

答案 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);
}