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 …

C语言数组应用

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

在 Intellij IDEA 里使用 OpenJFX (JavaFX)

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

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

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

Selenium UI 举例 getCssValue

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

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

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

windows server 2008 R2 x64 基础知识(2)

一、防火墙设置 1.windows防火墙的种类: 1)工作组网络环境 2)域网络环境 2.防火墙的配置 1)打开管理工具:win->管理工具->高级安全windows防火墙 2)管理配置: (1)防火墙的数据流类型 a.入站流量:外部访问内部分流量 b…

SOA 说明,解析

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一直对SOA这个概念不甚明了,再度记录下: 一、是一个面向服务的架构,是一种思想、规则。而不是一个确…

Windows API 第二篇 SHGetSpecialFolderPath

BOOL SHGetSpecialFolderPath( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate ); 参数解释: hwndOwner:Handle to the owner wind…

面向对象—的__new__()方法详解

[Python] Python 之 __new__() 方法与实例化 __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __init__() 负责将类的实例化,而在 __init__() 启动之前&#…

Dubbo 需求、架构、使用Demo

只是整理下方便自己记录 内容全部来自官网:http://dubbo.io/books/dubbo-user-book/preface/usage.html 一、需求 在大规模服务化之前,应用可能只是通过 RMI 或 Hessian 等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进…

Ubuntu安装之python开发

Ubuntu安装之python开发 什么??Ubuntu(乌班图)开发?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-…

vimdiff和vim-fugitive安装,使用教程

1、vimdiff的安装 在终端执行 git config --global merge.tool vimdiff git config --global merge.conflictstyle diff3 git config --global mergetool.prompt false git config --global diff.tool vimdiff git config --global difftool.prompt false git config --…

在 PowerPoint 2016 中嵌入网页

之前在智图这个网站上做了一张地图,在嵌入 PPT 里面的时候碰到了一些问题,现在把找到的解决方法写下来。 PPT 里面自带的 WebBrowser 控件可以实现网页浏览的功能。在“开发工具”选项卡下的“其他控件”中找到“Microsoft Web Browser”,在画…

js 正则表达式 整合

正则表达式:断言 取字符串区间: /(?<[" star "]).*(?[" end "])/// 简单封装 Vue.prototype.strMatch (str,star,end) > { let regs new RegExp("(?<[" star "]).*(?[" end "])"); let req str…

dubbo 注册中心zookeeper 手册

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 zookeeper 注册中心 Zookeeper 是 Apacahe Hadoop 的子项目&#xff0c;是一个树型的目录服务&#xff0c;支持变更推送&#xff0c;适…

iOS开发UI篇—简单介绍静态单元格的使用

一、实现效果与说明 说明&#xff1a;观察上面的展示效果&#xff0c;可以发现整个界面是由一个tableview来展示的&#xff0c;上面的数据都是固定的&#xff0c;且几乎不会改变。 要完成上面的效果&#xff0c;有几种方法&#xff1a; &#xff08;1&#xff09;可以直接利用代…

指针深入探讨

C语言变量的内存实质 一、先来理解C语言中变量的实质 要理解C指针&#xff0c;我认为一定要理解C中“变量”的存储实质&#xff0c;所以我就从“变量”这个东西开始讲起吧&#xff01;先来理解理解内存空间吧&#xff01;请看下图&#xff1a; 如上图所示&#xff0c;内存只不…

VC6.0详细教程

1 编制并运行一个简单程序 1.1 编制并运行程序的“四步曲”1.2 工程(PROJECT)以及工程工作区(PROJECT WORKSPACE)1.3 启动并进入VC6的集成开发环境1.4 创建工程并输入源程序代码(1)新建一Win32 Console Application工程(2)在工作区窗口中查看工程的逻辑架构(3)在工程中新建C源…

JAVA好学吗?工资待遇怎么样?

时代的进步也离不开互联网的推动&#xff0c;互联网的发展已经形成了一种趋势&#xff0c;而在这种大环境下我们不应该抗拒&#xff0c;如果自身条件允许&#xff0c;加入进来未尝不是一个好的选择。而在计算机行业内&#xff0c;JAVA的火爆毋庸自疑&#xff0c;很多人都意识到…