从foreach循环中删除最后一个逗号

MON*_*AAA 11 php foreach loops comma

我使用foreach循环从我的数据库中回显出一些值,并用逗号分隔它们,但我不知道如何删除它在最后一个值上添加的最后一个逗号.

我的代码非常简单,但我似乎无法找到正确的方法:

foreach ($this->sinonimo as $s){ 

echo '<span>'.ucfirst($s->sinonimo).',</span>';

}
Run Code Online (Sandbox Code Playgroud)

在此先感谢任何帮助:)

Séb*_*ien 23

将您的值放在一个数组中,然后implode用逗号(+一个更清洁的空格)放入该数组:

$myArray = array();
foreach ($this->sinonimo as $s){ 
    $myArray[] = '<span>'.ucfirst($s->sinonimo).'</span>';
}

echo implode( ', ', $myArray );
Run Code Online (Sandbox Code Playgroud)

这会将逗号放在每个值之间,但不会在最后.同样在这种情况下,逗号将在跨度之外,如:

<span>Text1<span>, <span>Text2<span>, <span>Text3<span>
Run Code Online (Sandbox Code Playgroud)


Jor*_*pos 7

您的代码的另一种方法是有点逻辑:

hasComma = false;
foreach ($this->sinonimo as $s){ 
    if (hasComma){ 
        echo ","; 
    }
    echo '<span>'.ucfirst($s->sinonimo).'</span>';
    hasComma=true;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

将分隔符视为值之前的前缀,第一个预设为 '' (空字符串),然后在每个元素后面设置为 ', ':

$s = '';
foreach ($names as $name) {
    echo $s . $name;
    $s = ', ';
}
Run Code Online (Sandbox Code Playgroud)


aeb*_*old 6

我通常会尽量避免为这些用例添加逻辑.最好的方法是将值存储在数组中并使用逗号进行内部处理.

但是,您可以通过CSS添加逗号,这更容易.

你干净漂亮的循环:

foreach($collection->object as $data)
{
    echo "<span>" . $data->var . "</span>";
}
Run Code Online (Sandbox Code Playgroud)

而对于CSS:

.selector span:after {
    content: ",";
}
.selector span:last-child:after {
    content: "";
}
Run Code Online (Sandbox Code Playgroud)

这适用于所有主流浏览器,包括IE8和更新版本.