在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的回答要优雅得多,也更"拉雅维利式"。
假设categories
是Collection
,那么就可以轻松完成
{{ $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