Удаление последней запятой из цикла foreach
Im, используя цикл foreach, чтобы эхо из некоторых значений из моей базы данных и отделяя каждый из них запятыми, но я не знаю, как удалить последнюю запятую, которую он добавляет к последнему значению.
мой код довольно прост, но я просто не могу найти правильный способ сделать это:
foreach ($this->sinonimo as $s){
echo '<span>'.ucfirst($s->sinonimo).',</span>';
}
заранее спасибо за любую помощь :)
8 ответов
ставим свои значения в массив, а потом 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>
другой подход для вашего кода будет немного логики:
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: "";
}
это работает для всех основных браузеров, включая IE8 и новее.
альтернативно ответу @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>";
для этого не нужен дополнительный массив. Он работает, сначала печатая первый элемент, затем в цикле печатает промежуточный сегмент, за которым следует Следующий элемент, а затем закрывает все конечным сегментом.
что Laravel имеет implode()
функция такая же, как php implode()
.
вы должны использовать implode()
функция on
использовать 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,
u может попробовать это
echo trim($str, ",");
и вывода
1,2,3,4,5,6,7,8