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.pswp.cn/news/450541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450541.shtml
英文地址,請注明出處:http://en.pswp.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