列表用逗号分隔,但最后一项不能有逗号


list separated by comma, but the last item must not have a comma

在laravel中,我如何用逗号分隔每个类别,如果有很多类别,最后一项不应该有逗号。

它应该看起来像:

工作类别:类别1、类别2、类别3、类别4

这是我的代码:

@if(count($job->categories) < 2)
     @foreach($job->categories as $category)
         {{ $category->name }}
     @endforeach
@else
     @foreach($job->categories as $category)
         {{ $category->name . ", " }}
     @endforeach
@endif

您可以使用Collection类中的方法"lists"
更多信息,请访问:Illuminate''Database''Eloquent''Collection


{{ implode(', ', $job->categories->lists('name')) }}

试试这个:

implode(',', array_map(function($a){return $a['name'];}, $job->categories->toArray()))

您希望所有的名称都在一个数组中,以便用逗号将它们内爆。因此,使用array_map迭代类别。但是array_map需要一个数组,而不是Collection,所以您首先需要将类别Collection转换为具有toArray函数的数组。

但我认为@CorradoStriuli的回答要优雅得多,也更"拉雅维利式"。

假设categoriesCollection,那么就可以轻松完成

{{ $job->categories->implode('name', ', ') }}

有很多方法可以做到这一点:

例如:

使用substr():

$yourString = susbtr($yourString,0,strlen($yourString-1));

使用trim():

$yourString = trim($yourString,',');

假设$job->categories是一个数组(而不是可迭代的数组),您可以使用内爆:

$yourString = implode(",",$job->categories);
//$yourString now contains a comma seperated list of categories

或者,在一个树枝模板内做这件事,你可以使用join,我相信(自从我使用树枝以来已经有一段时间了…)

{{ $job->categories|join(',') }}

http://php.net/manual/en/function.implode.phphttp://twig.sensiolabs.org/doc/filters/join.html