Как добавить номер в коллекцию laravel?

Если у меня dd($items), то результат такой:

Как добавить номер в коллекцию laravel?

Я хочу добавить номер в каждый массив

Итак, первый массив, существует номер ключа со значением 1

Второй массив, существует номер ключа со значением 2

так далее

Я пробую вот так:

$items->map(function ($item) {
    $item['number'] = 1;
    return $item;
});

Количество не увеличивается. Я не понимаю, чтобы сделать счетчик

Как я могу решить эту проблему?

Стоит ли изучать 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 и хотите разрабатывать...
2
0
2 115
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете попробовать это так

$newItems = $items->map(function ($item, $index) {
    $item['number'] =  $index + 1;
    return $item;
});

Редактировать: На основе комментария (я не рекомендую его, потому что тогда вы не сможете получить выгоду от красноречивой модели. Она просто возвращает вам массив)

$newItems = $items->map(function ($item, $index) {
    $number = ['number' =>  $index + 1];
    return $number + $item->toArray();
});

Оно работает. Но я хочу, чтобы позиция ключевого числа была первой. Не последний

Success Man 04.08.2018 10:23

Можете ли вы обновить свой ответ с помощью prepend? Так что я могу получить твой ответ

Success Man 04.08.2018 10:31

ваш предмет - красноречивая модель? Если это ваша коллекция объекта модели, я предлагаю вам использовать ее как есть. Если нет, вы можете преобразовать свой объект в массив и просто использовать '+'

rkj 04.08.2018 10:42

Да, моя вещь - красноречивый образец. Что ты имеешь в виду? Вам лучше дополнить свои ответы сценариями и некоторыми опциями. Так что я легко понимаю

Success Man 04.08.2018 12:55

Это не работает. Есть такая ошибка: Object of class App\Models\Item could not be converted to int

Success Man 04.08.2018 13:21

моя ошибка, обновленный ответ, должен быть $item->toArray()

rkj 04.08.2018 13:22
 $counter=1;
 $items->map(function ($item) use(&$counter){
   $item['number'] = $counter++;
   return $item;
});

Оно работает. Но я хочу, чтобы позиция ключевого числа была первой. Не последний

Success Man 04.08.2018 10:23

вы можете использовать array_merge

$newItems = $items->map(function ($item, $index) {

  return array_merge(array("number" =>  $index + 1), $item);;
});

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