На мой взгляд, у меня есть простой блок foreach, как показано ниже.
@foreach ($teams as $key => $team)
{{ str_ordinal($key + 1) }}
@endforeach
Прямо сейчас я показываю ключ, хотя он не совсем точен. Вот изображение:
Как я могу отобразить фактическое положение текущей итерации? Я заказываю по своей коллекции teams, но не уверен, как мне получить позицию текущего взаимодействия в этом цикле?
Возможный дубликат Как я могу получить текущий индекс массива в цикле foreach?






Вы можете применить array_values к своим данным перед переходом к шаблону:
array_values($teams);
Или, согласно этому https://laravel.com/docs/5.6/blade#the-loop-variable, вы можете использовать специальную переменную $loop. Полагаю, вам нужно свойство $loop->iteration (начинается с 1) или $loop->index (начинается с 0):
@foreach ($teams as $key => $team)
{{ $loop->iteration }}
@endforeach
Кидает Undefined property: stdClass::$interation
iteration, без N.
$loop->iteration - это именно то, что я искал, спасибо за подробный ответ!
Вы можете использовать $loop->index для получения индекса. Проверить его документы. Например:
@foreach ($teams as $team)
{{ $loop->index }}
@endforeach
Будет отображаться 0,1,2,3,4 ... до последней позиции элемента.
Что такое $loop? Если вы имеете в виду $teams, то это не сработает. Если вы имеете в виду $loop Laravel, то он выдает Undefined property: stdClass::$interation
Цикл фактически начинается с 0, поэтому он отображает 0,1,2,3, ..
Используйте петлю for вместо foreach. Вы приведете их в порядок.
$count = count($teams) ;
for($i=1;$i<=$count;$i++) {
// your code here using $i as the position
}
Здесь используется for, я использую foreach в лезвии, я не думаю, что лезвие поддерживает.
Blade 100% поддерживает петли for, просто используйте @for($i ...) ... @endfor. См. laravel.com/docs/5.6/blade#loops для справки.
Вы хотите отобразить значение текущего индекса?