Форматирование многомерного массива с использованием коллекций Laravel

У меня есть такой массив, который я получаю в результате запроса к базе данных (Google BigQuery):

Array
(
    [0] => Array
        (
            [points] => 95
            [user] => 434
            [type] => 20
            [identifier] => tv
            [date] => 2016-11-01
        )

    [1] => Array
        (
            [points] => 349
            [id] => 2989631
            [type] => 20
            [identifier] => app
            [date] => 2016-11-01
        )
) 

и еще один для идентификаторов:

Array
(
    [tv] => 1
    [app] => 2
)

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

Array
(
    [0] => Array
        (
            [points] => 95
            [user] => 434
            [type] => 20
            [identifier] => 1
            [date] => 2016-11-01
        )

    [1] => Array
        (
            [points] => 349
            [id] => 2989631
            [type] => 20
            [identifier] => 2
            [date] => 2016-11-01
        )
) 

Как я могу это сделать с помощью коллекций Laravel?

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


person Happy Coder    schedule 09.11.2016    source источник


Ответы (2)


Вы можете использовать array_map():

$identifiers = [
    'tv' => 1,
    'app' => 2
];

$result = array_map(function($item) use ($identifiers) {
    $item['identifier'] = $identifiers[$item['identifier']];
    return $item;
}, $itemsArray);
person Armin Sam    schedule 09.11.2016

Вероятно, лучшим решением здесь было бы использование обработчика:

public function getIdentifier($value)
{
    return $identifiersArray[$value];
}

Если вы это сделаете, вам не нужно будет восстанавливать свою коллекцию.

person Alexey Mezenin    schedule 09.11.2016
comment
Во-первых, я использую Google Bigquery в качестве базы данных и поэтому использую их API для выполнения запроса. По сути, они возвращают массив. - person Happy Coder; 09.11.2016