【问题标题】:Implementing transpose in Laravel collection在 Laravel 集合中实现转置
【发布时间】:2021-07-30 14:38:50
【问题描述】:

这是一个我想在 Laravel 集合中使用的宏。我知道转置是什么以及它是如何工作的。但我并没有确切了解这段代码是如何在 Laravel 集合中实现转置的。

您能解释一下我们将通过的项目将如何转置吗?

new static($items) 在这里做什么?

Collection::macro('transpose', function () {
    $items = array_map(function (...$items) {
        return $items;
    }, ...$this->values());

    return new static($items);
});

【问题讨论】:

    标签: laravel transpose laravel-collection


    【解决方案1】:

    您提供的代码应根据 Laravel 文档放置在服务提供者中:https://laravel.com/docs/8.x/collections#extending-collections。但是,从技术上讲,您可以将它们放置在任何地方。

    您对这段代码到底有什么不明白的地方? Illuminate\Support\Collectionmacro 函数接受闭包。在这种情况下,这意味着$items 指的是调用transpose 的集合。

    然后该 Collection 被映射(使用array_map)并且$items 作为扩展运算符函数参数传递。也许您熟悉扩展运算符,但它会将数组(或其他可迭代)的值扩展为单独的变量。

    在同一个函数中,这些单独的变量被返回,values() 被提供为扩展运算符来运行回调函数。有关array_map的更多信息,您可以阅读PHP文档:https://www.php.net/manual/en/function.array-map.php

    如果有任何不清楚的地方,请告诉我需要澄清的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2018-02-16
      • 1970-01-01
      • 2015-04-17
      相关资源
      最近更新 更多