Reputation: 8685
I am passing the array $cats to my laravel template view. It is a multidimensional array from a database transaction, containing category data. So it would contain data like:
$cat[0]['id'] = 1;
$cat[0]['name'] = 'First Category';
And so on. In my blade template I have the following code:
{{ $i=0 }}
@foreach($cats as $cat)
{{ $cat['name'] }}<br />
{{ $i++ }}
@endforeach
Which outputs:
0 First Category
1 Second Category
2 Third Category
Notice the numbers preceding the category name. Where are they coming from? Is this some clever Laravel trick? It seems that when you include a counter variable, they are automatically added. I can't find any mention of it anywhere, and I don't want them! How do I get rid of them?
Thanks.
Upvotes: 17
Views: 53357
Reputation: 26
if your $k is integer you can use {{ $k+1 }} or isn't integer you can use $loop->iteration
// for laravel version 4 and after
@foreach ($posts as $k => $post)
{{ $loop->iteration }}. {{ $post->name }}
@endforeach
Upvotes: 0
Reputation: 71
@foreach($cats as $cat)
{{ (isset($i))?$i++:($i = 0) }} - {{$cat['name']}}
@endforeach
Upvotes: 1
Reputation: 9
<? php $i = 0 ?>
@foreach ( $variable_name as $value )
{{ $ value }}<br />
< ? php $i++ ?>
@endforeach
Upvotes: 0
Reputation: 826
You just need to use the plain php translation:
@foreach ($collection as $index => $element)
{{$index}} - {{$element['name']}}
@endforeach
EDIT:
Note the $index
will start from 0
, So it should be {{ $index+1 }}
Upvotes: 71
Reputation: 669
You can actually use a built in helper for this: {{ $cat->incrementing }}
.
Upvotes: -1
Reputation: 6069
The {{ }}
syntax in blade essentially means echo. You are echoing out $i++
in each iteration of your loop. if you dont want this value to echo you should instead wrap in php tags. e.g.:
<?php $i=0 ?>
@foreach($cats as $cat)
{{ $cat['name'] }}<br />
<?php $i++ ?>
@endforeach
As an additional note, if you choose to work in arrays then thats your call but unless you have a specific reason to do so I would encourage you to work with object syntax, eloquent collection objects in laravel can be iterated over just like arrays but give you a whole lot of extra sugar once you get used to it.
Upvotes: 11