Получение позиции (индекса) объекта в foreach?

На мой взгляд, у меня есть простой блок foreach, как показано ниже.

@foreach ($teams as $key => $team)
{{ str_ordinal($key + 1) }}
@endforeach

Прямо сейчас я показываю ключ, хотя он не совсем точен. Вот изображение:

Получение позиции (индекса) объекта в foreach?

Как я могу отобразить фактическое положение текущей итерации? Я заказываю по своей коллекции teams, но не уверен, как мне получить позицию текущего взаимодействия в этом цикле?

Вы хотите отобразить значение текущего индекса?

reisdev 14.06.2018 22:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
24
2
50 052
3

Ответы 3

Вы можете применить 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

walino 14.06.2018 22:39
iteration, без N.
u_mulder 14.06.2018 22:49
$loop->iteration - это именно то, что я искал, спасибо за подробный ответ!
PatricNox 04.08.2020 15:13

Вы можете использовать $loop->index для получения индекса. Проверить его документы. Например:

@foreach ($teams as  $team)
{{ $loop->index }}
@endforeach

Будет отображаться 0,1,2,3,4 ... до последней позиции элемента.

Что такое $loop? Если вы имеете в виду $teams, то это не сработает. Если вы имеете в виду $loop Laravel, то он выдает Undefined property: stdClass::$interation

walino 14.06.2018 22:38

Цикл фактически начинается с 0, поэтому он отображает 0,1,2,3, ..

Adam 18.06.2020 08:57

Используйте петлю for вместо foreach. Вы приведете их в порядок.

$count = count($teams) ;
for($i=1;$i<=$count;$i++) {
    // your code here using $i as the position 
}

Здесь используется for, я использую foreach в лезвии, я не думаю, что лезвие поддерживает.

walino 14.06.2018 22:38

Blade 100% поддерживает петли for, просто используйте @for($i ...) ... @endfor. См. laravel.com/docs/5.6/blade#loops для справки.

Tim Lewis 14.06.2018 22:41

Другие вопросы по теме