Collection 用途归纳总结
GitHub
  • 简介
  • 计算类
  • 迭代类
  • 分组类
  • 转换类
  • 操作类
  • Where
由 GitBook 提供支持
在本页
  • 1. filter() , reject()
  • 2. each() , eachSpread()
  • 3. map() , mapSpread() , mapWithKeys() , mapToGroup()
  • 4. transform() , flatmap()

这有帮助吗?

在GitHub上编辑

迭代类

在数据操作中,时常会有针对 Collection 做循环处理,迭代每一个数据项,而针对迭代是不同的情况,可以有不同的函数可以操作使用。

1. filter() , reject()

filter 可以说是使用率最高的函数,可以在循环结束以后只保留符合条件的数据项; reject 则相反,符合条件的数据会被忽略掉。

2. each() , eachSpread()

each 可以当做 foreach 来使用; eachSpread 则是可以运用在二维数据结构下,就如同 Spread 字面意思一样,把二维数据的值一一赋值给参数,在其他相关函数也有对应的功能。

$collection = collect([['John Doe', 35], ['Jane Doe', 33]]);

$collection->eachSpread(function ($name, $age) {
    // $name = John Doe...
    // $age = 35...
});

3. map() , mapSpread() , mapWithKeys() , mapToGroup()

map 也是很常用的函数,在迭代后生成一个新的符合条件的 Collection; mapSpread 则不再说明; mapWithKeys 则是迭代时,需要返回 index 键值; mapToGroup 比较特别,可以做归类,将 Collection 按 value 分组。

$collection = collect([
    [
        'name' => 'John Doe',
        'department' => 'Sales',
    ],
    [
        'name' => 'Jane Doe',
        'department' => 'Sales',
    ],
    [
        'name' => 'Johnny Doe',
        'department' => 'Marketing',
    ]
]);

$grouped = $collection->mapToGroups(function ($item, $key) {
    return [$item['department'] => $item['name']];
});

$grouped->all();

/*
    [
        'Sales' => ['John Doe', 'Jane Doe'],
        'Marketing' => ['Johnny Doe'],
    ]
*/

$grouped->get('Sales')->all();

// ['John Doe', 'Jane Doe']

4. transform() , flatmap()

transform 其实就是 map,只是改变原来的 Collection,而不是新建一个 Collection; flatmap 则可以将二维 Collection 转换为一维。

上一页计算类下一页分组类

最后更新于3年前

这有帮助吗?