当前位置: 首页 > news >正文

laravel框架 - 集合篇

Laravel Eloquent 通常返回一个集合作为结果,集合包含很多有用的、功能强大的方法。

你可以很方便的对集合进行过滤、修改等操作。

本次教程就一起来看一看集合的常用方法及功能。
你可以使用助手函数 collect 将数组转化为集合。

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


1.增加

$data = collect([1, 2, 3]);
$data->push(3);
//输出
array:4 [▼0 => 11 => 22 => 33 => 3
]$data->put('name','yuan');
//输出
array:4 [▼0 => 11 => 22 => 3"name" => "yuan"
]

2.修改

$data = collect([1, 2, 3]);
$data->put(0, 'yuan');
//输出
array:3 [▼0 => "yuan"1 => 22 => 3
]

3.查询

#1.根据键值获取
$data = collect([1, 2, 3]);
$res=$data->get(1);
//输出	2#2.返回第一个元素
$data ->shift();
//输出	1#3.给定值查询集合,如果找到的话返回对应的键,如果没找到,则返回false
$res=$data->search(3);
//输出	2#4.严格比较
$res=$data->search(6,true);
//输出	false#5.转化为数组
$res=$data->toArray();#6.转化为JSON
$res=$data->toJson();

4.删除

# 根据键值删除
$res = $data->forget('1');# 从索引起切除一段后返回
# $collection->splice( <索引>, [ <切片长度> ] );
# 注:性质同 `slice`,不同的地方在于 `slice` 不会更改原有集合
# $collection->splice( <索引>, [ <切片长度> ], [ <切去的要替换成的元素数组> ] );
# 注:传入含有新元素的数组作为第三个参数以取代集合中被移除的元素
$data = collect([1, 2, 3]);
$data->splice(0, 1);
//输出
array:2 [▼0 => 21 => 3
]

5.统计

#1.求个数
$collection->count();#2.求平均
$collection->avg();
$collection->avg('<键名>'); // 多维#3.求和
$collection->sum();
$collection->sum('<键名>'); // 多维#4.求最大值
$collection->max();
$collection->max('<键名>'); // 多维#5.求最小值
$collection->min();
$collection->min('<键名>'); // 多维

6.筛选

#1.第一个元素
$collection->first();#2.最后一个元素
$collection->last();#3.条件查询
$user = User::all();
$data = collect($user);
$res = $data->first(function ($key, $value) {return $key->id > 9;
});
//输出	id>9的数据#4.多维数组筛选,返回元素
$collection->where( <键名>, <键值>, [ $strict = true ] ); // 默认严格模式
$collection->whereLoose( <键名>, <键值> ); // 宽松模式
$collection->whereIn( <键名>, <键值数组>, [ $strict = true ] ); // 默认严格模式
$collection->whereInLoose( <键名>, <键值数组> ); // 宽松模式
//例:$res = $data->where('id', '>',1);#5.获取唯一的元素
$collection->unique(); // 一维
$collection->unique( <键名> ); // 多维
$collection->unique( function( $item ){return <确定是否唯一的值>;
} );

7.排序

#1.所有底层数组
$collection->all();#2.键名重新生成
$collection->values();#3.返回新的随机排序的集合
$collection->shuffle();#4.返回新的倒序的集合
$collection->reverse();#5.返回从索引起的切片
$collection->slice( <索引>, [ <切片长度> ] );
# 注释:索引可以为负数,长度不填默认至最后一个元素#6.一维集合排序
$collection->sort( [ function( $a, $b ){return < -1 | 1 | 0 >;
} ] );
# 注:不传回调函数,则默认由小到大#7.多维集合排序
$collection->sortBy( <列名> ) // 以某列排序
$collection->sortBy( function( $item, $key ){return <参于排序的数>;
} )
# 注:排序从小到大依次为 undefined、字符或字符串、数字、数组对象
#     同为 undefined ,先出现的在前
#     同为 字符或字符串 ,一个字符一个字符比较其 Ascii 码
#     同为 数组或对象 ,比较其元素个数#8.多维集合排序倒序,性质同 `sortBy`
$collection->sortByDesc();#9.取指定数量的元素的集合
$collection->take( <数量> );
# 注:数量为负数,表示从末尾取

8.判断

#1.是否为空
$collection->isEmpty();#2.是否含有指定值
$collection->contains( <键值> );
$collection->contains( <键名>, <键值> );  // 多维
$collection->contains(function( $key, $value ){return <判断条件>
});#3.是否含有指定的键
$collection->has( <键名> );

9.合并

#1.集合元素拼接
$collection->implode( <拼接字符> ); // 一维
$collection->implode( <键名>, <拼接字符> ); // 多维中的某列#2.按个数拆分成多维
$prices = $collection->chunk(3);
$prices->toArray();
输出:
[0 => [0 => 18,1 => 23,2 => 65],1 => [3 => 36,4 => 97,5 => 43],2 => [6 => 81]
]#3.多维合并为一维
$collection->collapse();
# 注:对于 item 不是数组的,会被丢弃#4.合并键值对(集合值作为键,另一集合或数组作为对应值)
$collection->combine( <值数组> );
# 注:集合与另一集合或集合必须保持相同的元素个数
#     合并结果可能会由于集合有相同的值作为键值而个数减小
#     后出现的会覆盖前面出现的
collect([ 1, 2, '1' ])->combine([ 'a', 'b', 'c' ]);
// [ 1 => 'c', 2 => 'b' ]#5.索引合并
$collection->zip( <新数组> );
collect([ 1, 2 ])->zip([ 'a', 'b' ]);
// [ [ 1, 'a' ], [ 2, 'b' ] ]

10.遍历

#1.遍历
$collection->each(function ($value, $key) {<...>
});
注:回调函数中,返回 false 会终止遍历#2.遍历返回,形成新的集合
$collection->map(function ($value, $key) {<...>return <元素的新值>;例子:$value['user_id'] += 1;return $value;
});#3.遍历修改,*直接更改了原有集合*
$collection->transform(function ($value, $key) {<...>return <元素的新值>;
});#4.遍历执行回调,最后转为一维集合返回
$collection->flatMap(function( $value, $key ){return <新的元素>;
});
# 注:等价于 ->map()->collapse();#5.集合与数组合并
$collection->union( <数组> );
# 注:若集合与数组具有相同的键名,集合的将会保留,性质类同于 `+`

11.参考链接

https://www.cnblogs.com/Json159/p/9570903.html
https://learnku.com/laravel/t/27647

相关文章:

laravel框架 - 集合篇

Laravel Eloquent 通常返回一个集合作为结果&#xff0c;集合包含很多有用的、功能强大的方法。 你可以很方便的对集合进行过滤、修改等操作。 本次教程就一起来看一看集合的常用方法及功能。 你可以使用助手函数 collect 将数组转化为集合。 $data collect([1, 2, 3]); 1…...

[npm]package.json文件

[npm]package.json文件 生成 package.jsonpackage.json 必须属性nameversion 描述信息descriptionkeywordsauthorcontributorshomepagerepositorybugs 依赖配置dependenciesdevDependenciespeerDependenciesoptionalDependenciesbundledDependenciesengines 脚本配置scriptscon…...

联表查询 索引 事务 JDBC使用 CPU工作原理 线程概念 Thread类的用法

第 1 题&#xff08;单选题&#xff09; 题目名称&#xff1a; 已知表T1中有2行数据&#xff0c;T2中有3行数据&#xff0c;执行SQL语句,“select a.* from T1 a,T2 b”后&#xff0c;返回的行数为 题目内容&#xff1a; A .2 B .3 C .5 D .6 第 2 题&#xff08;单选题…...

学习格式化dedecms模版里格式化时间标签pubdate的方法

学习格式化dedecms模版里格式化时间标签pubdate的方法 [field:pubdate function"GetDateTimeMK(me)"/][field:pubdate function"GetDateMK(me)"/][field:pubdate function"MyDate(Y-m-d H:i,me)"/]显示不同的时间样式&#xff1a; GetDateTimeMK…...

用思维导图了解《骆驼祥子》的内容

《骆驼祥子》是一部经典的中国小说&#xff0c;由著名作家老舍所创作。小说以北京城下贫苦的人们为背景&#xff0c;讲述了一个叫做祥子的年轻人&#xff0c;为了摆脱贫困和苦难&#xff0c;不断地奋斗和努力的故事。下面我们进行文字思维导图的方式来一起了解一下整个故事的内…...

js 不同域iframe 与父页面消息通信

不同域iframe 与父页面消息通信 &#x1f4a1;访问 iframe 页面中的方法&#x1f4a1;跨文本消息监听消息发送消息 var iframe document.getElementById("myIframe"); var iframeWindow iframe.contentWindow;&#x1f4a1;访问 iframe 页面中的方法 iframeWindow…...

c++ vs2019 cpp20规范 模板function 源码解析

以下是文字结论&#xff1a; 这个函数模板&#xff0c;可以把函数类型&#xff0c;和对象函数类型&#xff08;就是类里定义了operator()运算符函数&#xff09;统一成一个类型&#xff0c;反正都是可调用对象。 代码注释完有900行&#xff0c;也挺多的。选择最重要的结论贴出…...

点云从入门到精通技术详解100篇-从全局到局部的三维点云细节差异分析(下)

目录 5.2.3多层级点云细节差异对比 5.3从全局到局部的细节差异分析流程与结果 实验结果与分析...

微信小程序中 vant weapp 使用外部的icon作为图标的步骤

微信小程序中 vant weapp 使用外部的icon作为图标的步骤 1. 在项目中创建静态资源文件夹2. 前往iconfont图标官网&#xff0c;添加图标并拷贝在线链接3. 下载iconfont代码&#xff0c;解压之后拷贝到小程序的目录中4. 修改iconfont.wxss 将本地链接替换为在线链接5. 在项目的ap…...

[npm]脚手架本地全局安装1

[npm]脚手架本地全局安装1 npm link 全局安装npm install 全局安装卸载全局安装的脚手架 该文章是你的脚手架已经开发完成的前提下&#xff0c;你想要本地全局安装该脚手架&#xff0c;便于本地使用脚手架的命令的情况 npm link 全局安装 如果本地开发的项目是个脚手架&#…...

2023学习计划

1.把vue3学习完&#xff0c;照着视频把示例都走一遍 2.完整地学习完springboot 3.刷题&#xff0c;写算法题。每天2道左右 4.看书《数据结构与算法之美》《高性能SQL》 5.复习JavaSE&#xff0c;把基础知识再过一遍 6.学习Redis&#xff0c;看视频&#xff0c;走示例 7.M…...

网络编程(一):服务器模型、Java I/O模型、Reactor事件处理模型、I/O复用

文章目录 一、Socket和TCP/IP协议族的关系二、服务器模型1.C/S模型&#xff08;Client/Server Model&#xff09;2.P2P模型&#xff08;Peer-to-Peer Model&#xff09; 三、Java的I/O演进1.BIO&#xff08;阻塞&#xff09;&#xff08;1&#xff09;工作流程&#xff08;2&am…...

flyway适配高斯数据库

文章目录 flyway适配高斯数据库 flyway适配高斯数据库 flyway-core 源码版本&#xff1a;6.2.2 tag 由于高斯和postgresql使用的驱动都是一样的&#xff0c;所以基于flyway支持已有的postgresql数据库来改造 修改点如下&#xff1a; 1、PostgreSQLConnection 类中的 doRest…...

LVS keepalived实现高可用负载群集

目录 1 Keepalived及其工作原理 1.1 Keepalived体系主要模块及其作用&#xff1a; 2 LVSKeepalived 高可用群集部署 2.1 配置负载调度器&#xff08;主、备相同&#xff09; 2.1.1 配置keeplived&#xff08;主、备DR 服务器上都要设置&#xff09; 2.1.2 启动 ipvsadm 服…...

HTTP RESTFul RPC

一、简介 &#xff08;1&#xff09;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种应用层协议。它经常用于在Web和服务器之间通讯&#xff0c;或服务与服务之间通讯。 &#xff08;2&#xff09;RESTFul 约束HTTP协议实现上的规范设计。 &#xff08;3&am…...

短视频seo矩阵系统源码开发搭建--代用户发布视频能力

短视频SEO矩阵系统源码开发搭建的代用户发布视频能力&#xff0c;主要是指在系统平台上&#xff0c;允许用户将其创作的内容发布到指定的账号或平台&#xff0c;并设置好相关的标题、话题、锚点等信息。 一、搭建步骤及注意事项 确定使用场景。根据业务需求&#xff0c;确定该…...

真实的产品开发中,后端的设计规约可以写哪些

真实的产品开发中&#xff0c;后端的设计规约可以写哪些 产品开发的后端设计规约通常包括以下内容&#xff1a; 数据模型设计&#xff1a;详细描述数据库的结构&#xff0c;包括数据表的设计、字段的定义和关系的设置等。 业务逻辑设计&#xff1a;详细描述后端的业务逻辑&a…...

Pytorch 多卡并行(2)—— 使用 torchrun 进行容错处理

前文 Pytorch 多卡并行&#xff08;1&#xff09;—— 原理简介和 DDP 并行实践 介绍了使用 Pytorch 的 DDP 库进行单机多卡训练的方法&#xff0c;本文进一步说明如何用 torchrun 改写前文代码&#xff0c;以提高模型训练的效率和容错性torchrun 是从 Pytorch 1.9.0 开始引入的…...

Java异常处理(详解)

Java异常处理 前言一、异常与异常类1.异常的概念2.异常类Error类Exception类&#xff08;1&#xff09;非检查异常&#xff08;2&#xff09;检查异常 二、异常处理1.异常的抛出与捕获2.try-catch-finally语句3.声明方法抛出异常3.用throw 语句抛出异常 三、自定义异常类 前言 …...

嵌入式-数据进制之间的转换

目录 一.简介 1.1十进制 1.2二进制 1.3八进制 1.4十六进制 二.进制转换 2.1二进制-十进制转换 2.2八进制-十进制转换 2.3十六进制-十进制转换 2.4十进制-二进制转换 2.5十进制-八进制转换 2.6十进制-十六进制转换 2.7小数部分转换 一.简介 被传入到计算机的数据要…...

腾讯mini项目-【指标监控服务重构】2023-08-20

今日已办 PPT制作 答辩流程 概述&#xff1a;对项目背景、架构进行介绍&#xff08;体现我们分组的区别和需求&#xff09;人员&#xff1a;小组成员进行简短的自我介绍和在项目中的定位&#xff0c;分工进展&#xff1a;对项目进展介绍&#xff0c;其中a、b两组的区别和工作…...

智能文本纠错API的应用与工作原理解析

引言 在数字时代&#xff0c;文本撰写和传播变得日益重要&#xff0c;无论是在学校里写论文、在职场中发送邮件&#xff0c;还是在社交媒体上发表观点。然而&#xff0c;文字错误、标点符号错误、语法问题和不当的表达常常会削弱文本的质量&#xff0c;降低信息传达的效果。为…...

在springboot下将mybatis升级为mybatis-plus

在springboot下将mybatis升级为mybatis-plus 1. 整体描述2. 具体步骤2.1 更新pom引用2.2 更新yml配置2.3 更新config配置2.4 BaseEntity修改 3. 程序启动4. 总结 1. 整体描述 之前项目工程用的是mybatis&#xff0c;现在需要将其替换为mybatis-plus&#xff0c;mybatis-plus的…...

Vuex详解:Vue.js的状态管理方案

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

栈与队列经典题目——用队列实现栈

本篇文章讲解栈和队列这一部分知识点的经典题目&#xff1a;用栈实现队列、用队列实现栈。对应的题号分别为&#xff1a;Leetcode.225——用队列实现栈&#xff0c;。 在对两个题目进行解释之前&#xff0c;先回顾以下栈和队列的特点与不同&#xff1a; 栈是一种特殊的线性表…...

Python stomp 发送消息无法显示文本

我们向消息服务器通过 stomp 发送的是文本消息。 当消息服务器发送成功后&#xff0c;消息服务器上的文本没有显示&#xff0c;显示的是 2 进制的数据。 如上图&#xff0c;消息没有作为文本来显示。 问题和解决 消息服务器是如何判断发送的小时是文本还是二进制的。 根据官…...

postgresql-视图

postgresql-视图 视图概述使用视图的好处 创建视图修改视图删除视图递归视图可更新视图WITH CHECK OPTION 视图概述 视图&#xff08;View&#xff09;本质上是一个存储在数据库中的查询语句。视图本身不包含数据&#xff0c;也被称为 虚拟表。我们在创建视图时给它指定了一个…...

科技资讯|Vision Pro头显无损音频仅限USB-C AirPods Pro 2耳机

彭博社的马克・古尔曼在最新发布的推文中表示&#xff0c;苹果 Vision Pro 头显的无损音频仅限于 USB-C AirPods Pro 2 耳机。 新款采用 USB-C 的 AirPods Pro 2 升级到了 IP54 级别&#xff08;原版不防尘&#xff0c;仅 IPX4 级抗水&#xff09;&#xff0c;可陪伴用户在恶劣…...

Postman应用——初步了解postman

Postman 是一个用于构建和使用 API 的 API 平台&#xff0c;Postman 简化了 API 生命周期的每个步骤并简化了协作&#xff0c;可以更快地创建更好的 API。 Postman 包含一个基于Node.js的强大的运行时&#xff0c;允许您向请求&#xff08;request&#xff09;和分组&#xff…...

分析报告显示,PHP是编程语言主力军,且在电商领域占据“统治地位”

日前有有业内专家透露了PHP语言的使用数据&#xff0c;并强调了PHP语言对于互联网的作用。 而根据W3 Techs发布的《全球前1000万个网站使用的编程语言分析(截至 2023.8)》中&#xff0c;有这样一组数据引起广泛的关注。PHP占比 77.2%、ASP占比 6.9%、Ruby 占比5.4%。 此外&am…...

做网站需要注册商标第几类/网络营销推广策划方案

近日&#xff0c;某一客户网站服务器被入侵&#xff0c;导致服务器被植入木马病毒&#xff0c;重做系统也于事无补&#xff0c;目前客户网站处于瘫痪状态&#xff0c;损失较大&#xff0c;通过朋友介绍找到我们SINE安全公司&#xff0c;我们立即成立安全应急处理小组&#xff0…...

重庆铜梁网站建设公司/百度网盘登陆入口

我在SLURM集群上预留了一些节点&#xff0c;并且希望在这些节点上运行一个python脚本。在一个节点(服务器)上&#xff0c;python脚本应该填充作业队列并将这些作业分发给客户端。大多数情况下&#xff0c;这种方式可以正常工作&#xff0c;但偶尔脚本会停下来。当使用Ctrl C时…...

成都网站优化维护/怎么被百度收录

max_children40 , 每个children平均占用20M-30M内存&#xff0c;children越多&#xff0c;可以同时接受的并发数量越多&#xff0c;一般children的值是网站最高并发数浮动值&#xff0c;这值再内存占用&#xff0c;就是你需要用到的内存。max_requests N 是指当每个children接…...

巴中城市建设投资有限公司网站/房地产销售技巧和话术

发现问题我使用的Oracle11g&#xff0c;当我敲下如下一段命令后&#xff0c;就让我傻眼了。。alter system set sga_max_size960M scopespfile;shutdown immediatestartup此时的startup报错了&#xff0c;错误为&#xff1a;SQL> startupORA-00844: Parameter not taking ME…...

企业网站建设基本流程/重庆seo服务

1、禁止复制文本html页面增加<style>*{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;} </style>复制代码2、禁止img标签增加样式<img style"pointer-even…...

荆门做网站公司/淘宝seo搜索优化工具

上一讲 数据结构之线性结构 主要讲数组与链表。这期介绍数据结构中线性结构代表栈与队列&#xff0c;两者通过数组与链表构造出来。栈实际应用递归&#xff0c;计算机函数执行调用&#xff0c;数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题等。队列实际应用消息中间件(如…...