iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Laravel Collection 基本使用
  • 943
分享到

Laravel Collection 基本使用

laravelphp开发语言 2023-09-18 09:09:01 943人浏览 薄情痞子
摘要

创建集合 为了创建一个集合,可以将一个数组传入集合的构造器中,也可以创建一个空的集合,然后把元素写到集合中。Laravel 有collect()助手,这是最简单的,新建集合的方法。 $collecti

创建集合

为了创建一个集合,可以将一个数组传入集合的构造器中,也可以创建一个空的集合,然后把元素写到集合中。Laravel 有collect()助手,这是最简单的,新建集合的方法。

$collection = collect([1, 2, 3]);

默认情况下, Eloquent 查询的结果返回的内容都是 Illuminate\Support\Collection 实例,如果希望对结果进行序列化,可以使用toArray()toJSON() 方法。

在非Laravel 项目中使用集合:

安装:

composer require illuminate/support

使用:

PHP// 引入packagerequire __DIR__ . '/vendor/autoload.php';$collection = collect([1, 2, 3]);var_dump($collection);

记住,所有方法都可以使用链式编程的方式优雅的操纵数组。而且几乎所有的方法都会返回新的 Collection 实例,

all

返回该集合表示的底层数组。

collect(["boo", "yumi", "Mac"])->all();// [“boo”, "yumi", "mac"]

avg

获取数组的平均值:

collect([1, 1, 2, 4])->avg(); // 2

获取二维数组的平均值:

collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->avg('foo'); // 20

avg()average() 的别名,两者的效果是一样的。

chunk

将大集合按指定大小拆分成小集合。

$collection = collect([1, 2, 3, 4, 5, 6, 7]);$chunks = $collection->chunk(4);$chunks->toArray();// [[1, 2, 3, 4], [5, 6, 7]]

chunkWhile

根据指定的回调值把集合分解成多个更小的集合:

$collection = collect(str_split('AABBCCCD'));$chunks = $collection->chunkWhile(function ($current, $key, $chunk) {    return $current === $chunk->last();});$chunks->all();// [['A', 'A'], ['B', 'B'], ['C', 'C', 'C'], ['D']]

collapse

将多个数组合并成一个集合。

$collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);// 注意这里返回了一个新的集合$collapsed = $collection->collapse();$collapsed->all();// [1, 2, 3, 4, 5, 6, 7, 8, 9]

combine

将一个集合的值作为「键」,再将另一个数组或者集合的值作为「值」合并成一个集合。

$collection = collect(['name', 'age']);$combined = $collection->combine(['boo', 25]);$combined->all();// ['name' => 'boo', 'age' => 25]

collect

返回一个包含当前集合所含元素的新的 Collection 实例:

$collection = collect([1, 2, 3]);$collection->all(); // [1,2,3]

concat

在集合的末端附加指定的数组或集合值:

$collection = collect(['John Doe']);$concatenated = $collection->concat(['Boo'])->concat(['name' => 'Yumi']);$concatenated->all();// ['John Doe', 'Boo', 'Yumi']

contains

判断集合是否包含给定的项目。

基本用法:

$collection = collect(['name' => 'boo', 'age' => 25]);$collection->contains('boo');  // true$collection->contains('yumi'); // false

也可以用 contains 方法匹配一对键/值,即判断给定的配对是否存在于集合中:

$collection = collect([    ['name' => 'boo', 'age' => 25],    ['name' => 'yumi', 'age' => 23],]);$collection->contains("name", "mac");  // false

也可以传递一个回调到 contains 方法来执行自己的真实测试

$collection = collect([1, 2, 3, 4, 5]);// $value: 1 $key: 0$collection->contains(function ($value, $key) {    return $value > 5;}); // false

contains 方法在检查项目值时使用「宽松」比较,意味着具有整数值的字符串将被视为等于相同值的整数。 相反 containsStrict 方法则是使用「严格」比较进行过滤。

containsStrict

使用「严格模式」判断集合是否包含给定的项目:

基本使用:

$collection = collect([    ['name' => 'boo', 'age' => 25],    ['name' => 'yumi', 'age' => 23],]);$collection->containsStrict("age", "25");  // false

如上例所示,数组值存在,但是值类型不一致也返回false。

count

返回该集合内的项目总数。

collect([1, 2, 3, 4])->count();  // 4

countBy

统计集合中每个元素出现的次数。

基本用法:

$collection = collect([1, 2, 2, 2, 3, 5, 5]);$counted = $collection->countBy();$counted->all();// [1 => 1, 2 => 3, 3 => 1, 5=>2]

进阶用法,自定义规则,统计元素出现的次数:

$collection = collect(['alice@gmail.com', 'bob@yahoo.com', 'carlos@gmail.com']);$counted = $collection->countBy(function ($email) {    return substr(strrchr($email, "@"), 1);});$counted->all();// ['gmail.com' => 2, 'yahoo.com' => 1]## crossJoin

返回指定集合的可能的笛卡尔积。

$collection = collect([1, 2]);$matrix = $collection->crossJoin(['a', 'b']);$matrix->all();$collection = collect([1, 2]);$matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']);$matrix->all();

dd

备份文件系统和停止系统(dump and die)的缩写,打印集合元素并中断脚本执行。

$collection = collect(['John Doe', 'Jane Doe']);$collection->dd();

如果不想中断执行脚本,请使用dump方法替代。

diff

与给定的集合或者数组进行比较,基于值求差集。

将集合与其它集合或纯 PHP 数组进行值的比较,然后返回原集合中存在而给定集合中不存在的值:

$collection = collect([1, 2, 3, 4, 5]);$collection->diff([2, 4, 6, 8])->all();   // [1, 3, 5]

diffAssoc

与给定的集合或者数组进行比较,基于键值对求差集。

返回原集合不存在于给定集合中的键值对:

$collection = collect([    'color' => 'orange',    'type' => 'fruit',    'remain' => 6]);$diff = $collection->diffAssoc([    'color' => 'yellow',    'type' => 'fruit',    'remain' => 3,    'used' => 6]);$diff->all(); // ['color' => 'orange', 'remain' => 6]

diffKeys

与给定的集合或者数组进行比较,基于键求差集。

返回原集合中存在而给定的集合中不存在「键」所对应的键值对:

$collection = collect([    'one' => 10,    'two' => 20,    'three' => 30,    'four' => 40,    'five' => 50,]);$diff = $collection->diffKeys([    'two' => 2,    'four' => 4,    'six' => 6,    'eight' => 8,]);$diff->all(); // ['one' => 10, 'three' => 30, 'five' => 50]

duplicates

从集合中检索并返回重复的值。

基本用法:

$collection = collect(['a', 'b', 'a', 'c', 'b']);$collection->duplicates();// [2 => 'a', 4 => 'b']

如果集合包含数组或对象,则可以传递希望检查重复值的属性的键:

$employees = collect([    ['email' => 'abigail@example.com', 'position' => 'Developer'],    ['email' => 'james@example.com', 'position' => 'Designer'],    ['email' => 'victoria@example.com', 'position' => 'Developer'],])$employees->duplicates('position');// [2 => 'Developer']

duplicates 方法在检查项目值时使用「宽松」比较,相反duplicatesStrict 方法则是使用「严格」比较进行过滤。

each

迭代集合中的内容并将其传递到回调函数中。

$collection = $collection->each(function ($item, $key) {    // 如果要中断对内容的迭代,那就从回调中返回 false    if () {        return false;    }});

eachSpread

同样是遍历集合,不过与each 的区别在于,对于多维数组,可以直接拿到元素。

$collection = collect([['Boo', 25, "men"], ['Yumi', 23, "woman"]]);$collection->eachSpread(function ($name, $age, $gender) {    var_dump($name, $age, $gender);    // Boo、25、men    // Yumi、23、woman});$collection->each(function ($item, $key){   // 同样可以在回调函数中,返回false ,终止循环   var_dump($item, $key);});

every

检查集合中的每一个元素是否通过指定条件:

collect([1, 2, 3, 4])->every(function ($value, $key) {    return $value > 2;});// false

注意:如果集合为空, every 将返回 true。

except

返回集合中除了指定键以外的所有项目。

$collection = collect(['product_id' => 1, 'price' => 100, 'discount' => false]);$filtered = $collection->except(['price', 'discount']);$filtered->all(); // ['product_id' => 1]

与之相反的方法是 only()

filter

使用给定的回调函数过滤集合的内容,只留下那些通过的元素。

$collection = collect([1, 2, 3, 4]);$filtered = $collection->filter(function ($value, $key) {    // 当闭包返回true 时,保留一个条目    return $value > 2;});$filtered->all(); // [3, 4]

如果没有提供回调函数,集合中所有返回false的元素都会被移除:

$collection = collect([1, 2, 3, null, false, '', 0, []]);$collection->filter()->all(); // [1, 2, 3]

与之相反的方法是 reject()

first

返回集合中的第一个元素。

基本用法:

collect([1, 2, 3, 4])->first();  // 1

同样可以传入回调函数,进行条件限制:

collect([1, 2, 3, 4])->first(function ($value, $key) {    // 当闭包返回true 时,保留一个条目    return $value > 2;}); // 3

如果需要返回最后一个元素可以使用last() 方法。

firstWhere

返回集合中含有指定键 / 值对的第一个元素:

$collection = collect([    ['name' => 'Regena', 'age' => null],    ['name' => 'Linda', 'age' => 14],    ['name' => 'DieGo', 'age' => 23],    ['name' => 'Linda', 'age' => 84],]);// 返回name = Linda 的第一个元素$collection->firstWhere('name', 'Linda');// ['name' => 'Linda', 'age' => 14]还可以在firstWhere 中使用算术运算符:$collection->firstWhere('age', '>=', 18);// ['name' => 'Diego', 'age' => 23]

和 where 方法一样,你可以将一个参数传递给 firstWhere 方法。在这种情况下, firstWhere 方法将返回指定键的值为「真」的第一个集合项:

$collection->firstWhere(‘age’);
// [‘name’ => ‘Linda’, ‘age’ => 14]

firstMap

遍历集合并将其中的每个值传递到给定的回调。

可以通过回调修改每个值的内容再返回出来,从而形成一个新的被修改过内容的集合:

$collection = collect([    ['name' => 'Sally'],    ['school' => 'Arkansas'],    ['age' => 28]]);$flattened = $collection->flatMap(function ($values) {    return array_map('strtoupper', $values);});$flattened->all();// ['name' => 'SALLY', 'school' => 'ARKANSAS', 'age' => '28'];

flatten

将多维集合转为一维。

基本用法:

$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]);$collection->flatten()->all();  // ['taylor', 'php', 'javascript'];还可以选择性地传入「深度」参数:$collection = collect([    'Apple' => [        ['name' => 'iPhone 6S', 'brand' => 'Apple'],    ],    'Samsung' => [        ['name' => 'Galaxy S7', 'brand' => 'Samsung']    ],]);$products = $collection->flatten(1);$products->values()->all();

在这个例子里,调用 flatten 方法时不传入深度参数的话也会将嵌套数组转成一维的,然后返回 ['iPhone 6S', 'Apple', 'Galaxy S7', 'Samsung'],传入深度参数能限制设置返回数组的层数。

flip

键值反转。

$collection = collect(["name" => "boo", "age" => 25]);$collection->flip()->all();  // ["boo" => "name", 25 => "age"]

forget

通过给定的键来移除掉集合中对应的内容。

$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);$collection->forget('name');$collection->all(); // ['framework' => 'laravel']

与大多数集合的方法不同,forget() 不会返回修改过后的新集合;它会直接修改原来的集合。

get

返回给定键的项目。

基本用法,如果该键不存在,则返回 null:

$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);$value = $collection->get('name'); // taylor

可以传递第二个参数作为默认值:

$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);$value = $collection->get('foo', 'boo'); // boo

甚至可以将回调函数当作默认值。如果指定的键不存在,就会返回回调的结果:

$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);$collection->get('email', function () {    return 'boo';}); // boo

groupBy

根据给定的键对集合内的项目进行分组。

基本用法:

$collection = collect([    ['account_id' => 'account-x10', 'product' => 'Chair'],    ['account_id' => 'account-x10', 'product' => 'Bookcase'],    ['account_id' => 'account-x11', 'product' => 'Desk'],]);$grouped = $collection->groupBy('account_id');$grouped->all();

同样可以传入一个回调函数来代替字符串的『键』,根据该回调函数的返回值来进行分组:

$grouped = $collection->groupBy(function ($item, $key) {    return substr($item['account_id'], -3);});$grouped->all();

甚至可以传入一个数组进行多层分组:

$data = new Collection([    10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']],    20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']],    30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']],    40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']],]);$result = $data->groupBy([    'skill',    function ($item) {        return $item['roles'];    },], $preserveKeys = true);

has

判断集合中是否存在给定的键。

$collection = collect(["name" => "boo", "age" => 25]);$collection->has("name");  // true

implode

合并集合中的项目。

implode 方法用于合并集合项。其参数取决于集合项的类型。如果集合包含数组或对象,你应该传递你希望合并的属性的键,以及你希望放在值之间用来「拼接」的字符串:

$collection = collect([    ['account_id' => 1, 'product' => 'Desk'],    ['account_id' => 2, 'product' => 'Chair'],]);$collection->implode('product', ', ');// Desk, Chair

如果集合中包含简单的字符串或数值,只需要传入「拼接」用的字符串作为该方法的唯一参数即可:

collect([1, 2, 3, 4, 5])->implode('-');// '1-2-3-4-5'

intersect

从原集合中移除不在给定数组或集合中的『任何值』,返回新的集合将保留原集合的键。

$collection = collect(['Desk', 'Sofa', 'Chair']);$intersect = $collection->intersect(['Desk', 'Chair', 'Bookcase']);$intersect->all();// [0 => 'Desk', 2 => 'Chair']

intersecTKEy

删除原集合中不存在于给定数组或集合中的『任何键』,返回新的集合将保留原集合的键。

$collection = collect([    'serial' => 'UX301', 'type' => 'screen', 'year' => 2009,]);$intersect = $collection->intersectByKeys([    'reference' => 'UX404', 'type' => 'tab', 'year' => 2011,]);$intersect->all();// ['type' => 'screen', 'year' => 2009]

isEmpty

判断集合是否为空。

collect([])->isEmpty(); // true

isNotEmpty

判断集合是否不为空。

collect([])->isEmpty(); // false

join

将集合中的值用字符串连接。

collect(['a', 'b', 'c'])->join(', '); // 'a, b, c'collect(['a', 'b', 'c'])->join(', ', ', and '); // 'a, b, and c'collect(['a', 'b'])->join(', ', ' and '); // 'a and b'collect(['a'])->join(', ', ' and '); // 'a'collect([])->join(', ', ' and '); // ''

keyBy

以给定的键作为集合的键。

$collection = collect([    ['product_id' => 'prod-100', 'name' => 'Desk'],    ['product_id' => 'prod-200', 'name' => 'Chair'],]);$keyed = $collection->keyBy('product_id');$keyed->all();

还可以在这个方法传递一个回调函数。该回调函数返回的值会作为该集合的键:

$keyed = $collection->keyBy(function ($item) {    return strtoupper($item['product_id']);});$keyed->all();

keys

返回集合的所有键。

$collection = collect(["name" => "boo", "age" => 25]);$collection->keys()->all();  // ["name", "age"]

last

返回集合中通过给定真实测试的最后一个元素,与first 方法正好相反。

collect([1, 2, 3, 4])->last(function ($value, $key) {    return $value < 3;});// 2

map

遍历集合并将每一个值传入给定的回调,返回新的集合。

$collection = collect([1, 2, 3, 4, 5]);$multiplied = $collection->map(function ($item, $key) {    return $item * 2;});$multiplied->all();// [2, 4, 6, 8, 10]

与其他大多数集合方法一样, map 会返回一个新的集合实例;它不会修改原集合。如果你想修改原集合,请使用 transfORM 方法。

mapToGroups

通过指定回调函数对集合进行分组,

$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();$grouped->get('Sales')->all();// ['John Doe', 'Jane Doe']

mapWithKeys

遍历集合并将每个值传入给定的回调。

max

返回指定键的最大值。

$max = collect([['foo' => 10], ['foo' => 20]])->max('foo');   // 20$max = collect([1, 2, 3, 4, 5])->max();   // 5

median

返回指定键的中间值。

$median = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->median('foo');   // 15$median = collect([1, 1, 2, 4])->median();  // 1.5

merge

将给定数组或集合合并到原集合。

如果给定的集合项的字符串键与原集合中的字符串键相匹配,则指定集合项的值将覆盖原集合的值:

$collection = collect(['product_id' => 1, 'price' => 100]);$merged = $collection->merge(['price' => 200, 'discount' => false]);$merged->all();// ['product_id' => 1, 'price' => 200, 'discount' => false]

如果给定的集合项为数字,则这些值将会追加在集合的最后:

$collection = collect(['Desk', 'Chair']);$merged = $collection->merge(['Bookcase', 'Door']);$merged->all();// ['Desk', 'Chair', 'Bookcase', 'Door']

min

返回指定键的最小值。

$min = collect([1, 2, 3, 4, 5])->min();     // 1

mode

返回指定键的众数值。

collect([1, 1, 2, 4])->mode();    // [1]

nth

每隔n个元素取一个元素组成一个新的集合。

$collection = collect(['a', 'b', 'c', 'd', 'e', 'f']);$collection->nth(4);    // ['a', 'e']

// 第二个参数可以作为偏移位置

$collection->nth(4, 1); // ['b', 'f']

only

返回集合中给定键的所有项目。

$collection = collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]);$filtered = $collection->only(['product_id', 'name']);$filtered->all();     // ['product_id' => 1, 'name' => 'Desk']

partition

配合list()方法区分回调函数满足和不满足的数据。

$collection = collect([1, 2, 3, 4, 5, 6]);list($underThree, $equalOrAboveThree) = $collection->partition(function ($i) {    return $i < 3;});$underThree->all();     // [1, 2]$equalOrAboveThree->all();    // [3, 4, 5, 6]

pipe

将集合传给给定的回调并返回结果。

$collection = collect([1, 2, 3]);$piped = $collection->pipe(function ($collection) {    return $collection->sum();}); // 6

pluck

获取集合中给定键对应的所有值。

基本用法:

$collection = collect([    ['product_id' => 'prod-100', 'name' => 'Desk', "id" => 1],    ['product_id' => 'prod-200', 'name' => 'Chair', "id" => 2],]);$plucked = $collection->pluck('name');$plucked->all();    // ['Desk', 'Chair']

还可以传入第二个参数作为键值:

$plucked = $collection->pluck('name', "id");$plucked->all();    // [1 => 'Desk', 2 => 'Chair']

pop

移除并返回集合中的最后一个项目。

$collection = collect([1, 2, 3, 4, 5]);$collection->pop();     // 5$collection->all();     // [1, 2, 3, 4]

prepend

将给定的值添加到集合的开头。

$collection = collect([1, 2, 3, 4, 5]);$collection->prepend(99);$collection->all();     // [99, 1, 2, 3, 4, 5]

如果是关联数组,也可以传入第二个参数作为键值:

$collection = collect(['one' => 1, 'two' => 2]);$collection->prepend(0, 'zero');$collection->all();       // ['zero' => 0, 'one' => 1, 'two' => 2]

pull

把给定键对应的值从集合中移除并返回。

$collection = collect(['product_id' => 'prod-100', 'name' => 'Desk']);$collection->pull('name');    // 'Desk'$collection->all();           // ['product_id' => 'prod-100']

push

把给定值添加到集合的末尾。

$collection = collect([1, 2, 3, 4]);$collection->push(5);$collection->all();       // [1, 2, 3, 4, 5]

put

在集合内设置给定的键值对。

$collection = collect(['product_id' => 1, 'name' => 'Desk']);$collection->put('price', 100);$collection->all();       // ['product_id' => 1, 'name' => 'Desk', 'price' => 100]

random

从集合中返回一个随机项。

$collection = collect([1, 2, 3, 4, 5]);$collection->random();      // 4 - (retrieved randomly)

也可以传入一个整数用来指定需要需要获取的随机项个数:

$collection->random();    // 2, 3, 5

reject

使用指定的回调过滤集合。

$collection = collect([1, 2, 3, 4]);$filtered = $collection->reject(function ($value, $key) {    return $value > 2;});$filtered->all();     // [1, 2]

reverse

倒转集合中项目的顺序,并保留原始的键值:

$collection = collect(['a', 'b', 'c', 'd', 'e']);$reversed = $collection->reverse();$reversed->all();

search

搜索给定的值并返回它的键,如果没有找到返回 false

$collection = collect([2, 4, 6, 8]);$collection->search(4);   // 1

shift

移除并返回集合的第一个元素。

$collection = collect([1, 2, 3, 4, 5]);$collection->shift();   // 1$collection->all();     // [2, 3, 4, 5]

shuffle

随机排序集合中的项目。

$collection = collect([1, 2, 3, 4, 5]);$shuffled = $collection->shuffle();$shuffled->all();       // [3, 2, 5, 1, 4] - (generated randomly)

slice

返回集合中给定值后面的部分。

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);$slice = $collection->slice(4);$slice->all();      // [5, 6, 7, 8, 9, 10]

skip() 方法类似。

sort

保留原数组的键,对集合进行排序。

$collection = collect([5, 3, 1, 2, 4]);$sorted = $collection->sort();

// 重置索引

$sorted->values()->all();       // [1, 2, 3, 4, 5]

splice

删除并返回从给定值后的内容,原集合也会受到影响。

$collection = collect([1, 2, 3, 4, 5]);$chunk = $collection->splice(2);$chunk->all();            // [3, 4, 5]$collection->all();       // [1, 2]

split

将集合按给定的值拆分。

$collection = collect([1, 2, 3, 4, 5]);$groups = $collection->split(3);$groups->all();     // [[1, 2], [3, 4], [5]]

sum

返回集合内所有项目的总和。

collect([1, 2, 3, 4, 5])->sum();    // 15

take

返回给定数量项目的新集合。

$collection = collect([0, 1, 2, 3, 4, 5]);$chunk = $collection->take(3);$chunk->all();      // [0, 1, 2]

times

静态times() 方法通过调用给定次数的回调函数来创建新集合:

$collection = Collection::times(10, function ($number) {    return $number * 9;});$collection->all();     // [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]

transform

迭代集合并对集合内的每个项目调用给定的回调。

$collection = collect([1, 2, 3, 4, 5]);$multiplied = $collection->map(function ($item, $key) {    return $item * 2;});$multiplied->all();     // [2, 4, 6, 8, 10]

注意:each 只是遍历集合,map 则会返回一个新的集合实例;它不会修改原集合。如果你想修改原集合,请使用 transform 方法。

uNIOn

将给定的数组添加到集合中。如果给定的数组含有与原集合一样的键,则首选原始集合的值。

$collection = collect([1 => ['a'], 2 => ['b']]);$union = $collection->union([3 => ['c'], 1 => ['b']]);$union->all();      // [1 => ['a'], 2 => ['b'], 3 => ['c']]

unique

返回集合中所有唯一的项目。

基本用法:

$collection = collect([1, 1, 2, 2, 3, 4, 2]);$unique = $collection->unique();// 使用value 重置索引$unique->values()->all();     // [1, 2, 3, 4]

当处理嵌套数组或对象时,你可以指定用于确定唯一性的键:

$collection = collect([    ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],    ['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'],    ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],    ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],    ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],]);$unique = $collection->unique('brand');$unique->values()->all();

values

返回键被重置为连续编号的新集合。

$collection = collect([5, 3, 1, 2, 4]);$sorted->values()->all();   // [1, 2, 3, 4, 5]

when

当传入的第一个参数为 true 的时,将执行给定的回调。

$collection = collect([1, 2, 3]);$collection->when(true, function ($collection) {    return $collection->push(4);});$collection->all();     // [1, 2, 3, 4]

// 当传入的第一个参数不为 true 的时候,将执行给定的回调函数

$collection->unless(false, function ($collection) {    return $collection->push(5);});

where

通过给定的键值过滤集合。

$collection = collect([    ['product' => 'Desk', 'price' => 200],    ['product' => 'Chair', 'price' => 100],    ['product' => 'Bookcase', 'price' => 150],    ['product' => 'Door', 'price' => 100],]);$filtered = $collection->where('price', 100);$filtered->all();

whereStrict方法使用严格模式通过给定的键值过滤集合。

whenEmpty

当集合为空时,将执行给定的回调函数。

$collection = collect(['michael', 'tom']);$collection->whenEmpty(function ($collection) {    return $collection->push('adam');});$collection->all();     // ['michael', 'tom']

反之whenNotEmpty() 方法当集合不为空时,将执行给定的回调函数。

whereIn

通过给定的键值数组来过滤集合。

$collection = collect([    ['product' => 'Desk', 'price' => 200],    ['product' => 'Chair', 'price' => 100],    ['product' => 'Bookcase', 'price' => 150],    ['product' => 'Door', 'price' => 100],]);$filtered = $collection->whereIn('price', [150, 200]);$filtered->all();

类似方法还有whereNotInwhereBetweenwhereNotInStrict

whereBetween

筛选指定范围内的集合。

$collection = collect([    ['product' => 'Desk', 'price' => 200],    ['product' => 'Chair', 'price' => 80],    ['product' => 'Bookcase', 'price' => 150],    ['product' => 'Pencil', 'price' => 30],    ['product' => 'Door', 'price' => 100],]);$filtered = $collection->whereBetween('price', [100, 200]);$filtered->all();

zip

将给定数组的值与相应索引处的原集合的值合并在一起。

$collection = collect(['Chair', 'Desk']);$zipped = $collection->zip([100, 200]);$zipped->all();     // [['Chair', 100], ['Desk', 200]]

来源地址:https://blog.csdn.net/qq_29920751/article/details/130645680

--结束END--

本文标题: Laravel Collection 基本使用

本文链接: https://www.lsjlt.com/news/411564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Laravel Collection 基本使用
    创建集合 为了创建一个集合,可以将一个数组传入集合的构造器中,也可以创建一个空的集合,然后把元素写到集合中。Laravel 有collect()助手,这是最简单的,新建集合的方法。 $collecti...
    99+
    2023-09-18
    laravel php 开发语言
  • Python collection的使用
    Python中的基本数据结构有list,dict,tuple,set。Python还有一个功能比较强大的包collections,可以处理并维护一个有序的dict,可以提高程序的运行效率。 1、collections中defau...
    99+
    2023-01-31
    Python collection
  • PHP laravel实现基本路由配置详解
    目录1.路由的基本介绍2.有效的路由方法3.路由重定向4.路由参数5.路由分组6.兜底路由7.频率限制8.获取当前访问路由属性在使用laravel之前我一直在使用thinkphp还有...
    99+
    2022-11-13
    PHP laravel路由配置 laravel 路由配置 PHP laravel
  • wireshark 基本使用
    在Wireshark中,你可以使用过滤器来根据接口名称定位到特定的包。下面是一些常见的过滤器示例: 根据源或目的IP地址过滤: ip.src == 192.168.0.1:过滤源IP地址为192.168.0.1的包。ip.dst == 19...
    99+
    2023-08-30
    wireshark 测试工具 网络
  • GitHub基本使用
    GitHub搜索 直接搜索 直接搜索关键字 明确搜索仓库标题 语法:in:name [关键词]展示:比如我们想在GitHub仓库中标题中搜索带有SpringBoot关键词的,我们可以样搜: ...
    99+
    2023-09-08
    github
  • adb基本使用
    安卓adb: Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip Mac版本:https://dl.google.co...
    99+
    2023-09-01
    软件测试
  • Java中如何使用Collection类
    Java中如何使用Collection类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Collection接口Collection是最基本的集合接口,一个Collectio...
    99+
    2023-06-17
  • MyBatis中的collection如何使用
    今天小编给大家分享一下MyBatis中的collection如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。colle...
    99+
    2023-07-02
  • EasyExcel 的基本使用
    EasyExcel EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源项目。在尽可能节约内存的情况下支持读写百 M 的 Excel。 官网:https://easye...
    99+
    2023-09-12
    java excel spring boot
  • MySQL的基本使用
    目录 1、数据库基础 2、MySQL数据库的使用 3、数据库基本操作 4、常用函数 5、MySQL自带库 1、数据库基础 数据(Data):图像、语音、文字等 在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据。 ...
    99+
    2023-10-06
    网络安全 web安全 安全 mysql
  • Postgresql的基本使用
    Windows 下服务检查首页查看服务是否运行查找postgresql服务服务正在运行执行命令 命令行管理打开cmd命令行连接数据库命令接入PostgreSQL数据库: psql -h IP地址 -p 端...
    99+
    2022-10-18
  • Android HttpsUrlConnection基本使用
    工作后一直用各种网络框架,都快把基础知识忘了,抽点时间复习一下基础类的用法。 HttpsUrlConnection  android网络请求类 当然还有HttpUrlConne...
    99+
    2022-06-06
    Android
  • postgresql基本使用(一)
    官网找到适合自己的版本并下载postgresql https://www.postgresql.org/download/ 版本号:postgresql-9.5.10.tar.bz2系统:CentOS7 x...
    99+
    2022-10-18
  • Android AIDL基本使用
    AIDL是Android多进程通讯方式一种。 如要使用 AIDL 创建绑定服务,请执行以下步骤: 创建 .aidl 文件 此文件定义带有方法签名的编程接口。 实现接口 Android SDK 工具会基于您的 .aidl 文件,使用 Java...
    99+
    2023-09-04
    android
  • nacos的基本使用
    1、nacos的安装 1、首先要使用nacos那肯定得先下载nacos nacos的GitHub下载地址 2、解压并且放到自己想放的目录,打开bin目录下的startup.cmd(windows下)...
    99+
    2023-10-25
    spring cloud java spring boot
  • PyCharm的基本使用
    PyCharm是我一直在使用的python编辑器,今天具体讲一下PyCharm的使用。下载首先是下载PyCharm,PyCharm的下载地址:https://www.jetbrains.com/pycharm/这个是一个商业软件,大家可以选...
    99+
    2023-06-02
  • csv.reader的基本使用
    一、简单介绍 csv.reader(file, delimiter='\t'),其中 delimiter 代表分隔符,通常根据数据集中相邻元素之间的分隔方式来设定,函数默认每行数据的元素间是以逗号分隔(也可以设置为'\t')。 csv.re...
    99+
    2023-09-03
    python 数据挖掘
  • Linux的基本使用
    🐧🐧🐧Linux作为一个开源的操作系统,其在服务器上,PC上,嵌入式设备上都是很好的操作系统,而大部分的公司也都在使用Linux操作系统,那么就让我...
    99+
    2023-09-04
    linux 服务器
  • Postgresql+Springboot yml基本使用
    一、Postgresql介绍 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概...
    99+
    2023-09-11
    数据库 postgresql mysql
  • minio的基本使用——java
    第一步:下载minio服务安装包 去官网下载:MinIO | 用于创建高性能对象存储的代码和下载内容 minio的使用文档:MinIO Object Storage for Kubernetes — MinIO Object Storag...
    99+
    2023-09-01
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作