Если у меня dd($items), то результат такой:
Я хочу добавить номер в каждый массив
Итак, первый массив, существует номер ключа со значением 1
Второй массив, существует номер ключа со значением 2
так далее
Я пробую вот так:
$items->map(function ($item) {
$item['number'] = 1;
return $item;
});
Количество не увеличивается. Я не понимаю, чтобы сделать счетчик
Как я могу решить эту проблему?






Вы можете попробовать это так
$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();
});
Можете ли вы обновить свой ответ с помощью prepend? Так что я могу получить твой ответ
ваш предмет - красноречивая модель? Если это ваша коллекция объекта модели, я предлагаю вам использовать ее как есть. Если нет, вы можете преобразовать свой объект в массив и просто использовать '+'
Да, моя вещь - красноречивый образец. Что ты имеешь в виду? Вам лучше дополнить свои ответы сценариями и некоторыми опциями. Так что я легко понимаю
Это не работает. Есть такая ошибка: Object of class App\Models\Item could not be converted to int
моя ошибка, обновленный ответ, должен быть $item->toArray()
$counter=1;
$items->map(function ($item) use(&$counter){
$item['number'] = $counter++;
return $item;
});
Оно работает. Но я хочу, чтобы позиция ключевого числа была первой. Не последний
вы можете использовать array_merge
$newItems = $items->map(function ($item, $index) {
return array_merge(array("number" => $index + 1), $item);;
});
Оно работает. Но я хочу, чтобы позиция ключевого числа была первой. Не последний