Невозможно изменить переменную использования в анонимной функции PHP

Я пытаюсь сопоставить свой запрос, чтобы добавить в запрос некоторое настраиваемое значение ключа. Если есть несколько одинаковых идентификаторов, пометьте их как одну отправку.

например мой запрос (коллекция) выглядит так:

[
{
ID: "5835910",
TrackingNr: "06215068123019",
TrackingURL: "http://exmaple-website?trackingnr=06215068123019"
},
{
ID: "5835910",
TrackingNr: "06215068123020",
TrackingURL: "http://exmaple-website?trackingnr=06215068123020"
},
{
ID: "5860771",
TrackingNr: "06215068129534",
TrackingURL: "http://exmaple-website?trackingnr=06215068129534"
},
{
ID: "5860771",
TrackingNr: "06215068129535",
TrackingURL: "http://exmaple-website?trackingnr=06215068129535"
},
....
]

мой результат должен быть таким:

[
{
    Shipment: 1
    ID: "5835910",
    TrackingNr: "06215068123019",
    TrackingURL: "http://exmaple-website?trackingnr=06215068123019"
    },
    {
    Shimpent: 1
    ID: "5835910",
    TrackingNr: "06215068123020",
    TrackingURL: "http://exmaple-website?trackingnr=06215068123020"
    },
    {
    Shimpent: 2
    ID: "5860771",
    TrackingNr: "06215068129534",
    TrackingURL: "http://exmaple-website?trackingnr=06215068129534"
    },
    {
    Shipment: 2
    ID: "5860771",
    TrackingNr: "06215068129535",
    TrackingURL: "http://exmaple-website?trackingnr=06215068129535"
    },
    ....
]

Я попытался сопоставить свой запрос и ключ отгрузки с массивом и установить счетчик для значения. Но это работает не так, как я ожидал. Мой счетчик не считает правильно.

 $counter = 1;                          

        $tracking = $tracking->map(function($item, $key) use ($tracking, $counter) {

            if (isset($tracking[$key + 1])) {
                if ($item->BelID != $tracking[$key + 1]->BelID) {
                    $counter = $counter + 1;

                }
            }

            return [
                'Shipment' => $counter, 
                'ID' => $item->BelID,
                'TrackingNr' => $item->TrackingNr,
                'TrackingURL' => $item->TrackingURL
            ];

        });
        return $tracking;
Стоит ли изучать 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 и хотите разрабатывать...
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны дать разрешение на изменение переменных в анонимных функциях, добавив & перед $:

use ($tracking, &$counter)

Вау, это мне очень помогло!

Greg Ostry 25.09.2018 13:25

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