Laravel 集合

Laravel 集合笔记

  • 筛选
    • 条件查询
    $user = User::all();
    $data = collect($user);
    $res = $data->first(function ($key, $value) {
       return $key->id > 9;
    });
    
    • 多维数组筛选
    $collection->where( <键名>, <键值>, [ $strict = true ] ); // 默认严格模式
    $collection->whereLoose( <键名>, <键值> ); // 宽松模式
    $collection->whereIn( <键名>, <键值数组>, [ $strict = true ] ); // 默认严格模式
    $collection->whereInLoose( <键名>, <键值数组> ); // 宽松模式
    //例:$res = $data->where('id', '>',1);
    
    • 获取唯一的元素
    $collection->unique(); // 一维
    $collection->unique( <键名> ); // 多维
    $collection->unique( function( $item ){
      return <确定是否唯一的值>;
    });
    
  • 过滤
    collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false])->only(['product_id', 'name']);//only返回集合中指定键的所有项目
    collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false])->except(['price', 'discount']);//except 则返回集合中除了指定键的所有项目
    
  • 添加
    collect(['one' => 1, 'two' => 2])->->prepend(0, 'zero');//prepend在集合前面增加一个项目
    collect(['product_id' => 1, 'name' => 'Desk'])->put('price', 100);//put在集合尾巴添加
    
  • 排序
    $collection->all();//所有底层数组
    $collection->values();//键名重新生成
    $collection->shuffle();//返回新的随机排序的集合
    $collection->reverse();//返回新的倒序的集合
    $collection->slice( <索引>, [ <切片长度> ] );//返回从索引起的切片
    $collection->sort( [ function( $a, $b ){ //一维集合排序
        return < -1 | 1 | 0 >;
    } ] );
    $collection->sortBy( <列名> ) // 以某列排序
    $collection->sortBy( function( $item, $key ){
      return <参于排序的数>;
    } )
    $collection->sortByDesc();//多维集合排序倒序
    $collection->take( <数量> );//取指定数量的元素的集合
    
  • 判断
    $collection->isEmpty();//是否为空
    $collection->contains( <键值> );
    $collection->contains( <键名>, <键值> );
    $collection->contains(function( $key, $value ){
        return <判断条件> //多维
    });
    $collection->has( <键名> );//是否含有指定的键
    
  • 合并
    $collection->implode( <拼接字符> ); // 一维 集合元素拼接
    $collection->implode( <键名>, <拼接字符> ); // 多维中的某列
    $collection->chunk( <每个小集合元素个数> );//按个数拆分成多维
    $collection->collapse();//多维合并为一维 对于 item 不是数组的,会被丢弃
    //合并键值对(集合值作为键,另一集合或数组作为对应值)
    $collection->combine( <值数组> );//collect([ 1, 2, '1' ])->combine([ 'a', 'b', 'c' ]);
    $collection->zip( <新数组> );//索引合并
    collect([ 1, 2 ])->zip([ 'a', 'b' ]);//[ [ 1, 'a' ], [ 2, 'b' ] ]
    $collection->flatten();//多维合并
    //['taylor', 'php', 'javascript'];
    collect(['name' => 'taylor', 'languages' => ['php', 'javascript']])->flatten()->all();
    
  • 求差集
    //diff 方法将集合和另一个集合或原生PHP数组以基于值的方式作比较,这个方法会返回存在于原来集合而不存在于给定集合的值
    $collection->diff();
    //diffAssoc 方法会基于键值将一个集合和另一个集合或原生 PHP 数组进行比较。该方法返回只存在于第一个集合中的键值对。
    $collection->diffAssoc();
    
  • 键值交换
    $collection->flip();
    
  • 分页
    //forPage 方法返回新的包含给定页数数据项的集合。该方法接收页码数作为第一个参数,每页显示数据项数作为第二个参数
    $collection->forPage(2, 3);
    
  • 分组集合数据项
    $collection->groupBy('account_id');
    
  • 将指定键的值作为集合的键,类似array_column($arr,null,key)
    collect([
      ['product_id' => 'prod-100', 'name' => 'desk'],
      ['product_id' => 'prod-200', 'name' => 'chair'],
    ])->->keyBy('product_id')->all();
    
  • 遍历
    //遍历 注:回调函数中,返回false相当于break 其它返回相当于continue 
    $collection->each(function ($item, $key) {
      <...>
    });
    //遍历返回,形成新的集合
    $collection->map(function ($item, $key) {
      <...>
      return <新的元素>;
    });
    //遍历修改,*直接更改了原有集合*
    $collection->transform(function ($item, $key) {
      <...>
      return <元素的新值>;
    });
    //遍历执行回调,最后转为一维集合返回  注:等价于 ->map()->collapse();
    $collection->flatMap(function( $item, $key ){
      return <新的元素>;
    }); 
    //集合与数组合并 注:若集合与数组具有相同的键名,集合的将会保留,性质类同于 `+`
    $collection->union( <数组> );
    

参考链接

posted @ 2022-07-07 15:56  绝技小嗨皮  阅读(239)  评论(0编辑  收藏  举报
Title