我正在使用foreach循环从数据库中输出一些值,并用逗号将它们分隔开。我不知道如何去掉最后一个值后面添加的逗号。
我的代码非常简单,但我似乎找不到正确的方法:
foreach ($this->sinonimo as $s){
echo '<span>'.ucfirst($s->sinonimo).',</span>';
}
我正在使用foreach循环从数据库中输出一些值,并用逗号将它们分隔开。我不知道如何去掉最后一个值后面添加的逗号。
我的代码非常简单,但我似乎找不到正确的方法:
foreach ($this->sinonimo as $s){
echo '<span>'.ucfirst($s->sinonimo).',</span>';
}
implode
。$myArray = array();
foreach ($this->sinonimo as $s){
$myArray[] = '<span>'.ucfirst($s->sinonimo).'</span>';
}
echo implode( ', ', $myArray );
这将在每个值之间放置逗号,但不包括最后一个。在这种情况下,逗号将在span的外面,如下所示:
这将在每个值之间放置逗号,但不包括最后一个。在这种情况下,逗号将在span的外面,如下所示:
<span>Text1<span>, <span>Text2<span>, <span>Text3<span>
你的代码还有另一种方法,就是运用一些逻辑:
hasComma = false;
foreach ($this->sinonimo as $s){
if (hasComma){
echo ",";
}
echo '<span>'.ucfirst($s->sinonimo).'</span>';
hasComma=true;
}
通常情况下,我会尽量避免为这种用例添加逻辑。最好的方法是将值存储在数组中,并使用逗号进行拼接。
但是,您可以通过 CSS 添加逗号,这更加容易。
您简洁明了的循环代码:
foreach($collection->object as $data)
{
echo "<span>" . $data->var . "</span>";
}
而对于CSS:
.selector span:after {
content: ",";
}
.selector span:last-child:after {
content: "";
}
$s = '';
foreach ($names as $name) {
echo $s . $name;
$s = ', ';
}
Laravel有一个与php中的implode()
相同的函数。
您应该在Collection
对象上使用implode()
函数:
$user->posts->implode('title', ', ');
Hello world!, First post, Second post
除了@Sébastien的答案,您还可以这样做:
echo "<span>".ucfirst($this->sinonimo[0]);
for($i = 1; $i < count($this->sinonimo); $i++) {
echo "</span>, <span>" . ucfirst($this->sinonimo[$i]);
}
echo "</span>";
这个不需要额外的数组。它通过首先打印第一个元素,然后在循环中打印中间段后面跟着下一个元素,最后用结束段来关闭所有内容。
使用 substr() 函数
将最终字符串放入 substr() 函数中
$string = "";
while ($row = mysql_fetch_array($result)) {
$string .= $name . ', ';
}
echo substr($string, 0, strlen($string) - 2);
Laravel implode()函数用于关联数据。
例如,帖子有许多类别。
$user->posts->implode('categories.name', ', '); // In loop {{ $post->categories->name }}
你可以使用 trim 函数。假设你的字符串是这样的
$str=1,2,3,4,5,6,7,8,
你可以尝试这个
echo trim($str, ",");
输出结果为:
1,2,3,4,5,6,7,8