zoukankan      html  css  js  c++  java
  • Laravel 集合常用方法的使用

    什么是集合?即:它是一种更具读取性和处理能力的数组封装;比如,我们从数据库得到的数据列表,它就是一种集合;

    IlluminateSupportCollection 类提供了一个更具可读性和更便于处理数组数据的封装。

    除了数据库对象返回的数据集合之外,我们还可以自行创建数据集合;
    $collection = collect(['张三', '李四', '王五', null]);
    
    //以底层数组形式输出
    return $collection->all();
    
    //map 方法,类似访问器,可修改输出
    return $collection->map(function ($value, $key) {
        return $key.'['.$value.']';
    });
    
    //支持链式,reject 移出非 true 的值
    return $collection->reject(function ($value, $key) {
        return $value === null;
    })->map(function ($value, $key) {
        return $key.'['.$value.']';
    });
    
    
    //filter 筛选为 true 的值,和 reject 相反
    return $collection->filter(function ($value, $key) {
        return $value === null;
    });
    
    //search 找到后返回 key,找不到返回 false
    return $collection->search('王五');
    
    //集合的分割
    return $collection->chunk(2);
    
    //迭代输出
    $collection->each(function ($item, $key) {
        echo $item;
    });
    如果三十多个方法都没有你要的,还可以自定义方法,比如说所有英文大写;
    $collection = collect(['Mr.Zhang', '李四', '王五', null]);
    
    Collection::macro('toUpper', function () {
        return $this->map(function ($value) {
            return strtoupper($value);
        });
    });
    
    return $collection->toUpper();
     
     
    常用方法
    1. all()方法,转换为属性形式输出,使用 dd 方法看类型;
    2. avg()方法返回平均值;
    //返回平均值
    $collection = collect([1, 2, 3, 4]); 
    return $collection->avg(); 
    
    //返回分组平均值
    $collection = collect([['男'=>1], ['女'=>1], ['男'=>3]]); 
    return $collection->avg('男');
    3. count()方法返回集合总数;
    4. countBy()方法返回数值出现的次数或回调函数指定值出现的次数;
    //值出现的次数
    $collection = collect([1, 2, 2, 3, 4, 4, 4]);
    return $collection->countBy();//{"1":1,"2":2,"3":1,"4":3}
    
    //回调搜索相同指定片段的值的次数
    $collection = collect(['xiaoxin@163.com', 'yihu@163.com', 'xiaoying@qq.com']);
    return $collection->countBy(function ($value) {
        return substr(strrchr($value, '@'), 1);
    });//{"163.com":2,"qq.com":1}
    5. diff()方法返回集合数组之间不相同的部分,组合新的集合;
    6. duplicates()返回重复的值;
    7. first()返回成立后的第一个值;
    8. flatten()将多维数组转换为一维;
    9. get()通过键名找值;
    10. has()判断集合中是否存在指定键;
    11. pop()移出集合中最后一个值;
    12. slice()返回指定值后续的集合;
    13. sort()返回指定值后续的集合;
    14. where()系列方法,和数据库条件一样;
    $collection = collect([ ['name'=>'Mr.Lee', 'gender'=>'男'], ['name'=>'Miss.Zhang', 'gender'=>'女'] ]);
    return $collection->where('name', 'Mr.Lee');//[{"name":"Mr.Lee","gender":"u7537"}]

    官方链接:https://learnku.com/docs/laravel/8.x/collections/9390

  • 相关阅读:
    Linux基础命令---arch
    JSON漫谈
    django中外键关联表的查询随笔
    <django中render_to_response的可选参数和使用方法>
    有趣的Redis:缓存被我写满了,该怎么办?
    2020全球C++及系统软件技术大会成功落下帷幕
    AWS 宣布创建 Elasticsearch 和 Kibana 分支
    Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
    自定义注解!绝对是程序员装逼的利器!!
    Java8 Stream
  • 原文地址:https://www.cnblogs.com/bushui/p/14733494.html
Copyright © 2011-2022 走看看