当前位置: 首页 > 知识库问答 >
问题:

什么是Laravel系列?

傅啸
2023-03-14

什么是Laravel系列?PHP数组和Laravel集合之间有什么区别?

集合似乎与数组非常相似。例如,通过get()方法检索的结果是数据的集合。但是当我们想将其用作数组时,我们必须使用toArray()方法。为什么啊?

共有3个答案

苏涛
2023-03-14

把一个集合想象成一个类固醇阵列。它是一个与数组工作相同的对象-也就是说,您可以使用$collection['item']获取项目,并使用$collection['foo']='bar'对其进行设置-但它还为更高级别的函数提供了额外的方法,以简化常见操作。这些方法通常是使用foreach和手动操作数组的替代方法。Adam Wathan提供了一些很好的实例,说明了使用集合而不是数组可能带来的好处。网上其他地方也有很好的介绍。

羊舌志
2023-03-14

集合是处理数据数组的方便包装器。集合有数组的所有便利,也有自己的助手。

Illumb\Support\Collection类为处理数据数组提供了一个流畅、方便的包装器。如您所见,Collection类允许您链接其方法,以执行底层数组的流畅映射和缩减。通常,集合是不可变的,这意味着每个集合方法都返回一个全新的集合实例。

https://laravel.com/docs/5.3/collections

龚镜
2023-03-14

它基本上是PHP数组函数的API包装器。但是它有更多有利于阵列处理的特性。

1.避免使用牙套

在这种情况下,至少使用5个大括号:

 shuffle(shuffle(arsort(array_unique(array_merge($array1,$array2)))));

这是地狱,如果数组中有超过10个大括号,最终可能会丢失大括号。但是,如果使用集合,则可以将其替换为:

collect($array1)
     ->merge($array2)
     ->unique()
     ->sort()
     ->shuffle()
     ->shuffle()

这是更具可读性、面向对象和流式思维。

2.统一API的使用

这是PHP原始API的问题,你永远不知道数组应该在参数中的哪里。他们只是不一致。例如:

    array_walk ( $array , $callback );
    array_map ( $callback , $array);
    array_merge ( $array1 ,$array2 );// return a new array
    array_push ($array1 ,$value); // not return a new array

Laravel Collect只提供一致的API,让我的生活更轻松。

    collect($array)
         ->each($callback)
         ->map($callback)
         ->merge($array2)
         ->push($value)

3.收集API进程键值数组更好

Laravel专注于处理来自数据库的数据。很多情况下都是键值数组的情况,而不是索引数组。因此Laravel集合有许多针对原始PHP函数的扩展方法,这些函数使用数组的键进行处理。例如:

 $array=[
        ["id"=>1,"name"=>"Apple"],
        ["id"=>2,"name"=>"Banana"],
        ["id"=>1,"name"=>"Apple"],
        ["id"=>2,"name"=>"Banana"],
    ];

    $result= collect($array)->unique("id");

结果将是:

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Apple
        )

    [1] => Array
        (
            [id] => 2
            [name] => Banana
        )

)

4.处理多层阵列

大多数PHP原始数组API只处理数组的顶层。如果要处理数组的深层,代码可能会变得复杂得多。但是,Laravel collection的许多API允许您访问阵列的深层。

例如:

 $array=[
        ["id"=>1,"product"=>['name'=>"Apple"]],
        ["id"=>2,"product"=>['name'=>"Watermelon"]],
        ["id"=>3,"product"=>['name'=>"Banana"]],

    ];

    $result= collect($array)->sortBy("product.name");

结果将是:

Array
(
    [0] => Array
        (
            [id] => 1
            [product] => Array
                (
                    [name] => Apple
                )

        )

    [2] => Array
        (
            [id] => 3
            [product] => Array
                (
                    [name] => Banana
                )

        )

    [1] => Array
        (
            [id] => 2
            [product] => Array
                (
                    [name] => Watermelon
                )

        )

)

5.原始PHP中缺少的更多数组助手

除此之外,Laravel collection在每个新版本中都增加了许多非常有用的数组API。设计了许多有用的助手来处理数组的键值类型,因此对于开发应用程序非常有用。比如:keyBy()where()isEmpty()isNotEmpty()等等。

此外,集合是可宏的,这意味着您可以扩展集合API,使集合更适合您的项目。

总而言之,Laravel集合是我开发的强大阵列处理助手。

 类似资料:
  • Linux 也是众多操作系统之一,要想知道 Linux 是什么,首先得说一说什么是操作系统。 计算机是一台机器,它按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成: 硬件是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板等; 软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、

  • 问题内容: 在sql关系中,父级是什么,子级是什么? 就我而言,我有一个零件(说螺丝)和产品材料。出于争论的考虑,一种产品材料(例如钢)只能属于一个零件(但不能属于现实世界)。所以这是1:n。该零件的pk将在ProductMaterial表中以fk表示。 在这种情况下,哪个是父母,哪个是孩子? 问题答案: 您可以通过以下方式解释数据库中的1:n关系:子代始终是该模型,该模型保存着外键,因为它表明了

  • 系统投屏,指的是安卓手机和Win10电脑系统自带的基于Miracast技术的无线投屏方式。 轻推智能投屏盒子支持Miracast投屏方式,但为了不影响投屏盒子的主要功能,默认不开启该投屏方式,当需要使用时,可在投屏主界面中点击“设置”开启“本次允许系统投屏”,如图: 当允许本次系统投屏后,可以在安卓手机的设置-多屏互动/投射大屏/屏幕共享,开始投屏;或者在Win10系统的电脑上找到“投影”功能,开

  • ChatGPT是由总部位于旧金山的公司 OpenAI构建。该公司负责创建GPT-3和DALL-E2 等软件

  • 问题内容: 最近,我看到了带有“ webkit”标签的问题。这些问题通常是与CSS,jQuery,布局,跨浏览器兼容性问题等有关的基于Web的问题。 那么,这是什么“ Webkit”,它与CSS有什么关系?我还注意到各种网站的源代码中有很多属性。这两个有关系吗? 更新资料 因此,从到目前为止的答案来看… WebKit是Safari / Chrome的HTML / CSS Web浏览器呈现引擎。是否

  • 数据库系统 (Database System,DBS)由硬件和软件共同构成。硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等。 数据库系统是指在计算机系统中引入数据库后的系统。完整的数据库系统结构关系如图所示: 由图可知,一个完整的数据库系统一般由数据库、数据库管理系统、应用开发工具、