Вы можете использовать некоторые методы из коллекции :
$result = $data->groupBy(['market_id', 'base_currency', 'currency_id'])
->map(function ($item) {
return $item->map(function ($item) {
return $item->map(function ($item) {
return $item->map(function ($item) {
return $item['currency_id'];
});
})->flatten();
})->sortKeys();
});
dd($result->toArray());
array:1 [
1 => array:2 [
1 => array:2 [
0 => 2
1 => 3
]
2 => array:2 [
0 => 1
1 => 2
]
]
]
Объяснение
groupBy
Метод groupBy
группирует элементы коллекции по заданному ключу. Несколько критериев группировки могут быть переданы в виде массива. Каждый элемент массива будет применен к соответствующему уровню в многомерном массиве:
$data->groupBy(['market_id', 'base_currency', 'currency_id']);
map
Метод map
выполняет итерацию по коллекции и передает каждое значение в данный обратный звонок.
->map(function ($item) {
return $item;
});
flatten
Метод flatten
сводит многомерную коллекцию в одно измерение:
->flatten()
sortKeys
Метод sortKeys
сортирует коллекцию по ключам базового ассоциативного массива:
->sortKeys()