Я отображаю элементы массива @foreach($tags as $tag)$tag->@endforeach
. Выход tag1tag2tag3
. Как можно вывести элементы массива в tag1,tag2,tag3
. И как не показывать,
, если в массиве всего один элемент.
Создать список, разделенный запятыми, из массива в laravel/blade?
comment
Проверьте имплод - php.net/manual/en/function.implode.php
- person jitendrapurohit   schedule 18.11.2016
Ответы (7)
implode()
хорош для отображения простых данных. В реальном проекте вы обычно хотите добавить HTML или логику в цикл, используйте $loop
< /a> переменная, которая доступна с версии 5.3:
@foreach ($arrayOrCollection as $value)
{{ $loop->first ? '' : ', ' }}
<span class="nice">{{ $value->first_name }}</span>
@endforeach
person
Alexey Mezenin
schedule
18.11.2016
Если в массиве только один элемент, запятая не появится?
- person Zachary Dale; 18.11.2016
@ZacharyDale да, вы правы, в этом случае вы не увидите запятую.
- person Alexey Mezenin; 18.11.2016
Выбранный ответ слишком сложен. У Laravel есть более простое решение:
{{ $items->pluck('tag')->implode(', ') }}
person
Zentag
schedule
09.08.2018
Как бы обернуть каждый элемент в тег привязки? И в идеале отображать... когда список слишком длинный?
- person Salvis Blūzma; 29.03.2021
Использовать это. Мы можем реализовать это с помощью $loop->last.
@foreach ($arrayOrCollection as $value)
<span class="nice">
{{ $value->first_name }}
@if( !$loop->last)
,
@endif
</span>
@endforeach
person
Biswa
schedule
22.04.2020
Используйте взрыв:
{{ implode(', ', $tags) }}
person
Mihai Matei
schedule
18.11.2016
В Laravel вы часто имеете дело с объектами Collection вместо необработанных массивов PHP. В таких случаях Collection предоставляет сам метод implode. Используйте его как
{{ $user->sports->pluck('name')->implode(', ') }}
- person Thijs; 29.11.2017
implode - это один из вариантов, или вы можете использовать соединение, как это
{{ join(', ', $tags) }}
Попробуйте первый или этот .. удачи
person
anuraj
schedule
18.11.2016
Я считаю, что то, что вы ищете, может быть примерно таким: // ваш массив в тегах php // $arr = ['one', 'two', 'three']; ? > // проходим по массиву с foreach и если счетчик массива не равен элементу las то после него ставим запятую
@foreach ($arr as $key => $value)
@if( count( $arr ) != $key + 1 )
{{ $value }},
@else
{{ $value }}
@endif
@endforeach
person
dexuu
schedule
18.11.2016
Попробуйте взорвать():
$arr = ['one', 'two', 'three'];
echo implode(',', $arr);
// выход
one,two,three
person
Mayank Pandeyz
schedule
18.11.2016