使用Laravel集合格式化多维数组

时间:2016-11-09 09:09:22

标签: php arrays laravel collections laravel-collection

我有一个这样的数组,我通过数据库查询(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集合执行此操作?

我一直在尝试使用transform函数,但没有想到从多维数组返回特定​​列。

2 个答案:

答案 0 :(得分:1)

您可以使用array_map()

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

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

答案 1 :(得分:0)

这里最好的解决方案可能是使用acessor

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

如果您这样做,则无需重建您的收藏。