在每个循环的末尾添加字符串,但不是最后一个循环

时间:2014-08-12 07:03:08

标签: php

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

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;
}

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

我该如何解决?

3 个答案:

答案 0 :(得分:7)

我总是使用implode和数组:

function set_query_var(array $params)
{
    $query_var = [];        

    foreach ($params as $key => $value) {
        $query_var[] = "{$key}={$value}";
    }

    return '?' . implode('&', $query_var);
}

答案 1 :(得分:0)

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

rtrim($string, "&");

会削减尾随&

答案 2 :(得分:0)

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;
}