在每个循环结束时添加string,但不是最后一个循环


Add string at the end of every loop but not for the last loop

我正在创建一个函数来设置查询变量,如下所示。

function set_query_var(array $params)
{
    $count = count($params);
    $query_var = '?';        
    foreach ( $params as $key => $value)
    {
        $query_var .= $key . '=' . $value .
        (($count > 1) ? '&' : NULL);
    }
    return $query_var;
}

上面的函数工作得很好,但唯一的问题是,它将&添加到结束循环中,这是我不想要的。

我该如何修复它?

我总是使用implode和array:

function set_query_var(array $params)
{
    $query_var = [];        
    foreach ($params as $key => $value) {
        $query_var[] = "{$key}={$value}";
    }
    return '?' . implode('&', $query_var);
}
function set_query_var(array $params)
{
    $count = count($params);
    $query_var = '?';        
    foreach ( $params as $key => $value)
    {
        $query_var .= $key . '=' . $value .
        (($count > 1) ? '&' : NULL);
    }
    $query_var = rtrim( $query_var, "&");
    return $query_var;
}

一个简单而肮脏的解决方案是从您的字符串中删除最后一个&

rtrim($string, "&");

将截断尾随的&