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

时间:2015-12-03 08:51:02

标签: php html html5 laravel laravel-5

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

应该看起来像:

职位类别:category1,category2,category3,category4

这是我的代码:

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

5 个答案:

答案 0 :(得分:2)

您可以使用Collection类中的'lists'方法。
更多信息: Illuminate\Database\Eloquent\Collection


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

答案 1 :(得分:1)

试试这个:

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

你想要一个数组中的所有名字,以便用逗号破坏它们。因此,您使用array_map迭代类别。但是array_map需要一个数组,而不是Collection,因此您首先需要将类别Collection转换为具有toArray函数的数组。

但我认为@CorradoStriuli的回答更为优雅,而且更加“laravelish&#39;

答案 2 :(得分:1)

假设categoriesCollection,您可以轻松完成

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

答案 3 :(得分:0)

你可以通过很多方式做到这一点:

例如:

使用substr()

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

使用trim()

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

答案 4 :(得分:0)

假设$ job-&gt;类别是一个数组(而不是Iteratable),你可以使用implode:

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

或者,在枝条模板中进行,你可以使用加入我相信(因为我使用了枝条已经有一段时间......)

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

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