美文网首页
7.集合、方法、函数

7.集合、方法、函数

作者: darren911 | 来源:发表于2019-12-10 23:48 被阅读0次

    Illuminate\Support\Collection 类

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

    创建集合

    如上所述, collect 辅助函数会为指定的数组返回一个新的 Illuminate\Support\Collection 实例。因此,我们可以这样轻松的创建一个集合:

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

    Tip:通常,Eloquent 查询的结果返回的内容都是 Collection 实例。

    扩展集合

    集合都是「可宏扩展」(macroable) 的,它允许你在执行时将其它方法添加到 Collection 类。例如,通过下面的代码在 Collection 类中添加一个 toUpper 方法:

    use Illuminate\Support\Str;
    Collection::macro('toUpper', function () {
        return $this->map(function ($value) {
            return Str::upper($value);
        });
    });
    $collection = collect(['first', 'second']);
    $upper = $collection->toUpper();
    

    方法列表

    • 集合或惰性集合的方法几乎通用
      all() 展示底层数组
      countBy() 方法计算集合中每个值的出现次数。默认情况下,该方法计算每个元素的出现次数:
    $collection = collect([1, 2, 2, 2, 3]);
    $counted = $collection->countBy();
    $counted->all();
    // [1 => 1, 2 => 3, 3 => 1]
    //但是,你也可以传递一个回调函数给 countBy 来计算自定义的值出现的次数:
    $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]
    

    懒集合

    注意:在进一步学习 Laravel 的懒集合之前,我们先花点时间熟悉一下 PHP generators

    为了补充已经很强大的 Collection 类, LazyCollection 类利用了 PHP 的 generators 来允许你在保持低内存使用率的同时使用非常大的数据集。

    例如,假设你的应用需要处理一个千兆字节的日志文件,同时利用 Laravel 的集合方法来解析这个日志文件。与其一次将整个文件读入内存,不如使用懒集合在给定时间仅将文件的一小部分保留在内存中:

    • 创建懒集合
      要创建懒集合,应将 PHP 生成器函数传递给集合的 make 方法:
    use Illuminate\Support\LazyCollection;
    LazyCollection::make(function () {
        $handle = fopen('log.txt', 'r');
    
        while (($line = fgets($handle)) !== false) {
            yield $line;
        }
    });
    

    函数

    相关文章

      网友评论

          本文标题:7.集合、方法、函数

          本文链接:https://www.haomeiwen.com/subject/dqmngctx.html