php如何使用高阶函数

1、首先学会数组转集合的方式

(1)使用collect函数

        $arr = [1, 2, 3, 4, 5];
        $collect = collect($arr);

(2)使用array_map函数

        $arr = [1, 2, 3, 4, 5];

        $collect = array_map(function($item){
            return $item * $item;
        }, $arr);
2、集合高阶函数使用教程

假设 $collection = collect(['susan', 'bob', 'jason', 'mali']);

(1)使用过滤函数filter()

        $result = $collection->filter(function ($value) {
            return $value == 'bob';
        });

 

(2)search 方法可以用给定的值查找集合。如果这个值在集合中,会返回对应的键。如果没有数据项匹配对应的值,会返回 false。

$names->search('mali');

// 返回3

(3)dump(),集合打印

collection->dump();

(4)使用map遍历

        $result = $collection->map(function ($value) {
            return $value .= '123';
        });
 

(5)使用zip()函数

Zip 方法会将给定数组的值与集合的值合并在一起。相同索引的值会添加在一起,这意味着,数组的第一个值会与集合的第一个值合并。在这里,我会使用我们在上面刚刚创建的集合。这对 Eloquent 集合同样有效。

        $result = $collection->zip([1, 2, 3]);

(6)whereNotIn按照给定数组中包含的键值过滤集合

        $collection = collect([
            ['user_id' => 1],
            ['user_id' => 2],
            ['user_id' => 3],
        ]);
        $result = $collection->whereNotIn('user_id', [1, 2]);

(7)whereNotIn按照给定数组中未包含的键值过滤集合

        $collection = collect([
            ['user_id' => 1],
            ['user_id' => 2],
            ['user_id' => 3],
        ]);
        $result = $collection->whereNotIn('user_id', [1, 2]);
 

(8)max 方法返回给定键的最大值

       $collection = collect([
            ['user_id' => 1],
            ['user_id' => 2],
            ['user_id' => 3],
        ]);
        $result = $collection->max('user_id');

        //结果为3

(9)pluck 方法返回指定键的所有值。 它对于提取一列的值很有用。

       $collection = collect([
            ['user_id' => 1],
            ['user_id' => 2],
            ['user_id' => 3],
        ]);
        $result = $collection->pluck('user_id');

(10)each 是一种迭代整个集合的简单方法。 它接受一个带有两个参数的回调:它正在迭代的项和键。 Key 是基于 0 的索引。

$posts->each(function ($item, $key) {
    // Do something
});

(11)tap() 方法允许你随时加入集合。 它接受回调并传递并将集合传递给它。 您可以对项目执行任何操作,而无需更改集合本身。 因此,您可以在任何时候使用tap来加入集合,而不会改变集合。

$collection->whereNotIn('user_id', 3)
    ->tap(function ($collection) {
        $collection = $collection->where('user_id', 1);
        info($collection->values());
    })
    ->all();

(12)pipe 方法非常类似于 tap 方法,因为它们都在集合管道中使用。 pipe 方法将集合传递给回调并返回结果。

$collection->pipe(function($collection) {
    return $collection->min('user_id');
});

(13)contains 方法只检查集合是否包含给定值。 只传递一个参数时才会出现这种情况。


$contains->contains('USA');
// true

$contains->contains('UK');
// false

(14)forget 只是从集合中删除该项。 您只需传递一个键,它就会从集合中删除该项目。

$forget = collect(['country' => 'usa', 'state' => 'ny']);

$forget->forget('country')->all();

(15)avg()

$avg = collect([
    ['shoes' => 10],
    ['shoes' => 35],
    ['shoes' => 7],
    ['shoes' => 68],
])->avg('shoes');

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 使用,命令说明

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. D:\ChengXu\git\Git中双击Git Bash启动git窗口。 2. 这条不能放到博客,是我的账号密码。 3. 添加: git add …

2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包

题面 题意:给你一堆点,求一个最大面积的空凸包,里面没有点. 题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.5或者.0结尾,不用对答案多做处理 1 #include<bits/stdc.h>2 #define N 553 using namespace std;4 struct rec5 {6 double x,y;7 };8 rec…

python读xml文件

# -*- coding:utf-8 -*- import jsonimport requestsimport oscurpathos.path.dirname(os.path.realpath(__file__))xmlpathos.path.join(curpath,read1.xml)with open(xmlpath,encoding"utf-8") as fp: bodyfp.read() print(body)转载于:https://www.cnblogs.…

C语言数组应用

一、数组的内存布局 先看下面的例子&#xff1a;int a[5];所有人都明白这里定义了一个数组&#xff0c;其包含了5 个int 型的数据。我们可以用a[0],a[1]等来访问数组里面的每一个元素&#xff0c;那么这些元素的名字就是a[0],a[1]…吗&#xff1f;看下面的示意图&#xff1a; 如…

Installation failed, deleting ./composer.json.安装phpunit报错解决方案

是因为你没有装全局的phpunit&#xff0c;安装命令 composer global require phpunit/phpunit 之后你输入 composer require --dev phpunit/phpunit 就发现你安装成功了

MyBatis在Oracle中插入数据并返回主键的问题解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言&#xff1a;我早期用过这个方法&#xff0c;但是返回的依旧是影响行数&#xff0c;不是主键。 只是这种写法可以达到我要的效果&a…

在 Intellij IDEA 里使用 OpenJFX (JavaFX)

2019独角兽企业重金招聘Python工程师标准>>> JDK 11 把 JavaFX 剥离了出来&#xff0c;形成了单独且开源的 OpenJFX 模块。 本文的目的是通过简单的例子解释这一变化对使用 JavaFX 所造成的影响&#xff0c;并找到一种在 IDEA 2018.2 上使用它的办法。 首先&#xf…

使用phpunit新建项目

1、mkdir test-project 新建一个test-project 2、cd test-project 跑到文件夹中 3、实例化git git init 4、新建phpunit项目 composer require --dev phpunit/phpunit 5、使用gi实例化.gitignore gi composer>.gitignore (如果没有安装gi&#xff0c;请使用命令ec…

如何解决eclipse里面tomcat 8080端口被占用

很多时候运行tomcat 的时候总是会提示tomcat 的端口被占用 但是任务管理器里面还找不到是哪个端口被占用了 因此很多人就重新配置tomcat 或者去修改tomcat的端口号 &#xff0c;其实这么做太麻烦了 &#xff0c;小弟在这里告诉你一个非常简单的方法。 1.在开始菜单中选择运行 …

Selenium UI 举例 getCssValue

selenium jar包中&#xff0c;在WebElement的接口中&#xff0c; String getCssValue(String var1);可以通过标签&#xff0c;获取对应的css值。具体要怎么用呢&#xff0c;如下&#xff1a; WebElement baidu driver.findElement(By.id("su"));su.getCssValue(&quo…

java集合框架中contains(),containsKey()和containsValue()的用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 java集合框架中contains(),containsKey()和containsValue()的用法&#xff1a; List集合的contains()方法用于判断集合中包不包含某个元…

敏捷视频

规模化极限编程的关键抓手&#xff1a;验收条件https://mp.weixin.qq.com/s/aHlSxpMx7DTQXaoEgcAQ3g 5分钟让你子解持续集成https://www.bilibili.com/video/BV1SK411W77W/?spm_id_fromtrigger_reload 5分钟让你学会返工率降低1倍的神技--开卡、验卡https://www.bilibili.com/…

提问的智慧

提问的智慧转载于:https://www.cnblogs.com/whigym/p/10028642.html

C语言指针和数组概述

几乎每次讲课讲到指针和数组时&#xff0c;我总会反复不停的问学生&#xff1a;到底什么是指针&#xff1f;什么是数组&#xff1f;他们之间到底是什么样的关系。从几乎没人能回答明白到几乎都能回答明白&#xff0c;需要经历一段“惨绝人寰”的痛。指针是C/C的精华&#xff0c…

Linux tee的花式用法和pee

1.tee多重定向 tee [options] FILE1 FILE2 FILE3... tee的作用是将一份标准输入多重定向&#xff0c;一份重定向到标准输出/dev/stdout&#xff0c;然后还将标准输入重定向到每个文件FILE中。 例如&#xff1a; $ cat alpha.log | tee file1 file2 file3 | cat $ cat alpha.log…

[CF893F]Subtree Minimum Query

题目大意&#xff1a; 给你一颗有根树&#xff0c;点有权值&#xff0c;m次询问&#xff0c;每次问你某个点的子树中距离其不超过k的点的权值的最小值。&#xff08;边权均为1&#xff0c;点权有可能重复&#xff0c;k值每次询问有可能不同&#xff0c;强制在线&#xff09; 做…

mac电脑快捷键(持续更新)

1、快速查找软件 commandspace 2、显示/隐藏文件夹 shiftcmmand. 3、路径输入 commandshiftg 4、快速打开软件 commandtab 5、截图 commandshift3 commandshift4 6、注销 Command-Shift-Q 7、强制注销 ommand-Shift-Option-Q 8、睡眠 controlshift电源键 9、选…

C语言typedef关键字—伟大的缝纫师

关于马甲的笑话。有这样一个笑话&#xff1a;一个猎人在河边抓捕一条蛇&#xff0c;蛇逃进了水里。过一会&#xff0c;一个乌龟爬到岸边。猎人一把抓住这个乌龟&#xff0c;大声的说道&#xff1a;小样&#xff0c;别你为你穿了个马甲我就不认识你了&#xff01;typedef 关键字…

将网桥的配置写进去/etc/sysconfig/network-scripts/ifcfg-xxx

有时候需要使用网桥命令比如brctl设置一些网桥的属性&#xff0c;而这些方式能否同样写进去配置文件使其永久开机生效。 答案是不行的&#xff0c;也同样找过Ubuntu的&#xff0c;其实Ubuntu可以实现&#xff0c;参考&#xff1a;http://manpages.ubuntu.com/manpages/cosmic/m…

phpstorm如何回滚。并取消本地提交

1、现在我提交到本地 当前git版本为4b53dca9 上一版本为965cdf14 2、现在执行回滚操作&#xff0c;取消本地提交 版本复制到这里&#xff0c;点击reset就会回滚了 如需使用git命令操作&#xff0c;请参考链接https://blog.csdn.net/qq_35774849/article/details/107313193