简体   繁体   English

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

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

I am creating a function to set query vars as below. 我正在创建一个函数来设置查询变量,如下所示。

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

Above function works fine but only issue is that, it is adding & to the end loop which I don't want. 上面的函数工作正常,但是唯一的问题是,它在我不需要的末尾循环中添加了&

How can I fix it? 我该如何解决?

I always use implode and array: 我总是使用implode和数组:

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

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

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

An easy and dirty solution to you problem is to remove the last & from your string. 一个简单而又肮脏的解决方案是从字符串中删除last &

rtrim($string, "&");

would cut trailing & . 将减少尾随&

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM