Я пытаюсь сопоставить свой запрос, чтобы добавить в запрос некоторое настраиваемое значение ключа. Если есть несколько одинаковых идентификаторов, пометьте их как одну отправку.
например мой запрос (коллекция) выглядит так:
[
{
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;






Вы должны дать разрешение на изменение переменных в анонимных функциях, добавив & перед $:
use ($tracking, &$counter)
Вау, это мне очень помогло!