16

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

我的代码很简单,但我似乎找不到正确的方法:

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

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

}

在此先感谢您的帮助:)

4

9 回答 9

33

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

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

echo implode( ', ', $myArray );

这会将逗号放在每个值之间,但不会放在末尾。同样在这种情况下,逗号将在跨度之外,例如:

<span>Text1<span>, <span>Text2<span>, <span>Text3<span>
于 2013-11-12T17:06:10.293 回答
7

我通常会尽量避免为此类用例添加逻辑。最好的方法是将值存储在一个数组中并用逗号将其内爆。

但是,您可以通过 CSS 添加逗号,这要容易得多。

你漂亮干净的循环:

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

对于 CSS:

.selector span:after {
    content: ",";
}
.selector span:last-child:after {
    content: "";
}

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

于 2014-08-28T07:30:38.880 回答
7

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

hasComma = false;
foreach ($this->sinonimo as $s){ 
    if (hasComma){ 
        echo ","; 
    }
    echo '<span>'.ucfirst($s->sinonimo).'</span>';
    hasComma=true;
}
于 2013-11-12T17:15:25.610 回答
4

Laravel 具有implode()与 php 相同的功能implode()

您应该在对象上使用implode()函数:Collection

$user->posts->implode('title', ', ');

输出将是这样的:

Hello world!, First post, Second post
于 2015-08-23T10:27:45.670 回答
3

除了@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>";

这不需要额外的数组。它首先打印第一个元素,然后在循环中打印中间段,然后打印下一个元素,然后用结束段关闭所有内容。

于 2013-11-12T17:10:41.773 回答
1

你可以使用修剪功能。假设你的字符串是这样的

$str=1,2,3,4,5,6,7,8,

你可以试试这个

echo trim($str, ",");

输出是

1,2,3,4,5,6,7,8
于 2017-01-01T14:00:52.543 回答
1

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

$s = '';
foreach ($names as $name) {
    echo $s . $name;
    $s = ', ';
}
于 2021-05-11T09:11:54.133 回答
1

使用substr()函数

将您的最终字符串放入substr()函数中

 $string = "";
    while ($row = mysql_fetch_array($result)) {
      $string .= $name . ', ';
    }
    echo substr($string, 0, strlen($string) - 2);
于 2018-05-16T10:50:23.113 回答
0

用于关系数据的 Laravel implode() 函数。

像帖子有很多类别。

$user->posts->implode('categories.name', ', '); // In loop {{  $post->categories->name }}
于 2016-10-03T12:01:25.060 回答