찾다
PHP 프레임워크Laravellaravel에서 일반적으로 사용되는 수집 방법은 무엇입니까?

laravel에서 일반적으로 사용되는 수집 방법은 filter(), search(), Chunk(), dump(), map(), zip(), whereNotIn(), max(), pluck(), Each(), 탭( ), 파이프(), 포함() 등

laravel에서 일반적으로 사용되는 수집 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Laravel 6 버전, Dell G3 컴퓨터.

Laravel 컬렉션(Collection) 일반 메서드

filter()

filter는 가장 유용한 laravel 컬렉션 메서드 중 하나를 사용하여 콜백을 사용하여 컬렉션을 필터링할 수 있습니다. true를 반환하는 항목만 전달합니다. 다른 모든 항목은 삭제됩니다. filter는 원래 인스턴스를 변경하지 않고 새 인스턴스를 반환합니다. 콜백의 두 매개변수로 valuekey를 허용합니다. filter 返回一个新实例而不更改原始实例。 它接受 valuekey 作为回调中的两个参数。

$filter = $collection->filter(function($value, $key) {
    if ($value['user_id'] == 2) {
        return true;
    }
});

$filter->all();

all 方法返回底层数组。 上面的代码返回以下响应。

[
    1 => [
        "user_id" => 2,
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ]
]

search()

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

$names = collect(['Alex', 'John', 'Jason', 'Martyn', 'Hanlin']);

$names->search('Jason');

// 2

search 方法默认使用松散比较。你可以在它的第二个参数传 true 使用严格比较。

你也可以传你自己的回调函数到 search 方法中。将返回通过回调真值测试的第一个项的键。

$names = collect(['Alex', 'John', 'Jason', 'Martyn', 'Hanlin']);

$names->search(function($value, $key) {
    return strlen($value) == 6;
});

// 3

chunk()

chunk 方法将集合分割为多个给定大小的较小集合。将集合显示到网格中非常有用。

$prices = collect([18, 23, 65, 36, 97, 43, 81]);

$prices = $prices->chunk(3);

$prices->toArray();

以上代码生成效果。

[
    0 => [
        0 => 18,
        1 => 23,
        2 => 65
    ],
    1 => [
        3 => 36,
        4 => 97,
        5 => 43
    ],
    2 => [
        6 => 81
    ]
]

dump()

dump 打印集合的方法。 它可用于在任何位置的调试和查找集合内的内容。

$collection->whereIn('user_id', [1, 2])
    ->dump()
    ->where('user_id', 1);

dump 上述代码结果。

map()

map 方法用于遍历整个集合。 它接受回调作为参数。 valuekey 被传递给回调。 回调可以修改值并返回它们。 最后,返回修改项的新集合实例。

$changed = $collection->map(function ($value, $key) {
    $value['user_id'] += 1;
    return $value;
});

return $changed->all();

基本上,它将 user_id 增加 1。

上面代码的响应如下所示。

[
    [
        "user_id" => 2,
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => 3,
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => 4,
        "title" => "Telegram Bot",
        "content" => "Crypto Telegram Bot in Laravel",
        "category" => "php"
    ]
];

zip()

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

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

$zipped->all();

JSON 响应会像这样。

所以,基本上就是这样。如果数组的长度小于集合的长度,Laravel 会给剩下的 Collection 类型的元素末尾添加 null。类似地,如果数组的长度比集合的长度大,Laravel 会给 Collection 类型的元素添加 null,然后再接着数组的值。

whereNotIn()

您可以使用 whereNotIn 方法简单地按照给定数组中未包含的键值过滤集合。 它基本上与 whereIn 相反。 此外,此方法在匹配值时使用宽松比较 ==

让我们过滤 $collection,其中 user_id 既不是 1 也不是 2 的。

$collection->whereNotIn('user_id', [1, 2]);

上面的语句将只返回 $collection 中的最后一项。 第一个参数是键,第二个参数是值数组。 如果是 eloquent 的话,第一个参数将是列的名称,第二个参数将是一个值数组。

max()

max 方法返回给定键的最大值。 你可以通过调用 max 来找到最大的 user_id。 它通常用于价格或任何其他数字之类的比较,但为了演示,我们使用 user_id。 它也可以用于字符串,在这种情况下,Z> a

$collection->max('user_id');

上面的语句将返回最大的 user_id,在我们的例子中是 3

pluck()

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

$title = $collection->pluck('title');
$title->all();

结果看起来像这样。

[
  "Helpers in Laravel",
  "Testing in Laravel",
  "Telegram Bot"
]

使用 eloquent 时,可以将列名作为参数传递以提取值。 pluck

$title = $collection->pluck('user_id', 'title');
$title->all();
all 메소드는 기본 배열을 반환합니다. 위의 코드는 다음 응답을 반환합니다.

[
    "Helpers in Laravel" => 1,
    "Testing in Laravel" => 2,
    "Telegram Bot" => 3
]

search()

search 메소드는 주어진 값으로 컬렉션을 검색할 수 있습니다. 값이 컬렉션에 있으면 해당 키가 반환됩니다. 해당 값과 일치하는 데이터 항목이 없으면 false가 반환됩니다. 🎜
$collection->each(function ($item, $key) {
    info($item['user_id']);
});
🎜search 방법은 기본적으로 느슨한 비교를 사용합니다. 엄격한 비교를 사용하려면 두 번째 매개변수에 true를 전달하면 됩니다. 🎜🎜또한 자신만의 콜백 함수를 search 메소드에 전달할 수도 있습니다. 콜백의 진실성 테스트를 통과한 첫 번째 항목의 키를 반환합니다. 🎜
$posts = App\Post::all();

$posts->each(function ($item, $key) {
    // Do something
});
🎜🎜🎜chunk()🎜🎜🎜🎜chunk 메서드는 컬렉션을 지정된 크기의 여러 개의 작은 컬렉션으로 분할합니다. 컬렉션을 그리드에 표시하는 데 매우 유용합니다. 🎜
$collection->each(function ($item, $key) {
    // Tasks
    if ($key == 1) {
        return false;
    }
});
🎜위 코드는 효과를 생성합니다. 🎜
$collection->whereNotIn('user_id', 3)
    ->tap(function ($collection) {
        $collection = $collection->where('user_id', 1);
        info($collection->values());
    })
    ->all();
🎜🎜🎜dump()🎜🎜🎜🎜dump 메소드를 사용하여 컬렉션을 인쇄합니다. 어느 위치에서나 컬렉션 내의 콘텐츠를 디버깅하고 찾는 데 사용할 수 있습니다. 🎜
[
    [
        "user_id" => "1",
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ]
]
🎜dump 위 코드의 결과입니다. 🎜🎜🎜🎜map()🎜🎜🎜🎜map 메소드는 전체 컬렉션을 탐색하는 데 사용됩니다. 콜백을 매개변수로 받아들입니다. 가 콜백에 전달됩니다. 콜백은 값을 수정하고 반환할 수 있습니다. 마지막으로 수정된 항목의 새 컬렉션 인스턴스가 반환됩니다. 🎜
$collection->pipe(function($collection) {
    return $collection->min('user_id');
});
🎜기본적으로 user_id가 1씩 증가합니다. 🎜🎜위 코드의 응답은 아래와 같습니다. 🎜
$contains = collect(['country' => 'USA', 'state' => 'NY']);

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

$contains->contains('UK');
// false
🎜🎜🎜zip()🎜🎜🎜🎜Zip 메소드는 주어진 배열의 값을 컬렉션의 값과 병합합니다. 동일한 인덱스를 가진 값이 함께 추가됩니다. 즉, 배열의 첫 번째 값이 컬렉션의 첫 번째 값과 병합됩니다. 여기서는 위에서 만든 컬렉션을 사용하겠습니다. 이는 Eloquent 컬렉션에도 적용됩니다. 🎜
$collection->contains('user_id', '1');
// true

$collection->contains('title', 'Not Found Title');
// false
🎜JSON 응답은 다음과 같습니다. 🎜🎜그래서 기본적으로는 그게 다입니다. 배열의 길이가 컬렉션의 길이보다 작으면 Laravel은 나머지 Collection 유형 요소의 끝에 null을 추가합니다. 마찬가지로, 배열의 길이가 컬렉션의 길이보다 길면 Laravel은 Collection 유형 요소에 null을 추가하고 그 뒤에 배열 값을 추가합니다. 🎜🎜🎜🎜whereNotIn()🎜🎜🎜🎜 whereNotIn 메서드를 사용하면 주어진 배열에 포함되지 않은 키 값으로 컬렉션을 간단히 필터링할 수 있습니다. 기본적으로 whereIn과 반대입니다. 또한 이 방법은 값을 일치시킬 때 완화된 비교 ==를 사용합니다. 🎜🎜user_id12도 아닌 $collection을 필터링해 보겠습니다. 🎜
$collection->contains(function ($value, $key) {
    return strlen($value['title']) 🎜위 명령문은 <code>$collection</code>의 마지막 항목만 반환합니다. 첫 번째 매개변수는 키이고 두 번째 매개변수는 값 배열입니다. eloquent의 경우 첫 번째 매개변수는 열 이름이 되고 두 번째 매개변수는 값 배열이 됩니다. 🎜🎜🎜🎜max()🎜🎜🎜🎜<code>max</code> 메소드는 주어진 키의 최대값을 반환합니다. max를 호출하여 가장 큰 <code>user_id</code>를 찾을 수 있습니다. 일반적으로 가격이나 기타 숫자와 같은 비교에 사용되지만 설명을 위해 <code>user_id</code>를 사용하겠습니다. 문자열과 함께 사용할 수도 있습니다. 이 경우 <code>Z> 🎜<pre class="brush:php;toolbar:false">$forget = collect(['country' => 'usa', 'state' => 'ny']);

$forget->forget('country')->all();
🎜위 명령문은 가장 큰 user_id를 반환하며, 우리의 경우에는 3입니다. 🎜🎜🎜🎜pluck()🎜🎜🎜🎜pluck 메서드는 지정된 키에 대한 모든 값을 반환합니다. 컬럼의 값을 추출하는데 유용합니다. 🎜
[
    "state" => "ny"
]
🎜결과는 이렇습니다. 🎜
$avg = collect([
    ['shoes' => 10],
    ['shoes' => 35],
    ['shoes' => 7],
    ['shoes' => 68],
])->avg('shoes');
🎜eloquent를 사용하는 경우 열 이름을 인수로 전달하여 값을 추출할 수 있습니다. pluck는 두 번째 인수도 허용하는데, 이는 Eloquent 컬렉션의 또 다른 열 이름이 될 수 있습니다. 두 번째 인수의 값으로 키가 지정된 컬렉션이 생성됩니다. 🎜
$avg = collect([12, 32, 54, 92, 37]);

$avg->avg();
🎜결과는 다음과 같습니다: 🎜rrreee🎜🎜🎜each()🎜🎜🎜

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

$collection->each(function ($item, $key) {
    info($item['user_id']);
});

上面代码,只是记录每个项的 user_id

在迭代 eloquent 集合时,您可以将所有列值作为项属性进行访问。 以下是我们如何迭代所有帖子。

$posts = App\Post::all();

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

如果回调中返回 false,它将停止迭代项目。

$collection->each(function ($item, $key) {
    // Tasks
    if ($key == 1) {
        return false;
    }
});

tap()

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

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

在上面使用的 tap 方法中,我们修改了集合,然后记录了值。 您可以对 tap 中的集合做任何您想做的事情。 上面命令的响应是:

[
    [
        "user_id" => "1",
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ]
]

你可以看到 tap 不会修改集合实例。

pipe()

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

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

上述命令的响应是 1。 如果从 pipe 回调中返回集合实例,也可以链接其他方法。

contains()

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

$contains = collect(['country' => 'USA', 'state' => 'NY']);

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

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

如果将 键 / 值 对传递给 contains 方法,它将检查给定的键值对是否存在。

$collection->contains('user_id', '1');
// true

$collection->contains('title', 'Not Found Title');
// false

您还可以将回调作为参数传递给回调方法。 将对集合中的每个项目运行回调,如果其中任何一个项目通过了真值测试,它将返回 true 否则返回 false

$collection->contains(function ($value, $key) {
    return strlen($value['title']) <p>回调函数接受当前迭代项和键的两个参数值。 这里我们只是检查标题的长度是否小于 13。在 <code>Telegram Bot</code> 中它是 12,所以它返回 <code>true</code>。</p><p><strong><span style="font-size: 16px;">forget()</span></strong></p><p><code>forget</code> 只是从集合中删除该项。 您只需传递一个键,它就会从集合中删除该项目。</p><pre class="brush:php;toolbar:false">$forget = collect(['country' => 'usa', 'state' => 'ny']);

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

上面代码响应如下:

[
    "state" => "ny"
]

forget 不适用于多维数组。

avg()

avg 方法返回平均值。 你只需传递一个键作为参数,avg 方法返回平均值。 你也可以使用 average 方法,它基本上是 avg 的别名。

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

上面的代码返回 30 ,这是所有四个数字的平均值。 如果你没有将任何键传递给 avg 方法并且所有项都是数字,它将返回所有数字的平均值。 如果键未作为参数传递且集合包含键 / 值对,则 avg 方法返回 0。

$avg = collect([12, 32, 54, 92, 37]);

$avg->avg();

上面的代码返回 45.4,这是所有五个数字的平均值。

您可以使用这些 laravel 集合方法在您自己的项目中处理集合。

【相关推荐:laravel视频教程

위 내용은 laravel에서 일반적으로 사용되는 수집 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
포용의 환상 : 원격 작업의 고립과 외로움 해결포용의 환상 : 원격 작업의 고립과 외로움 해결Apr 25, 2025 am 12:28 AM

TocombatisolationandloneLinessInremotwork, componiesshouldimplementregular, meignmentfortuncations, andusetechnologyeftically

풀 스택 개발을위한 Laravel : 포괄적 인 가이드풀 스택 개발을위한 Laravel : 포괄적 인 가이드Apr 25, 2025 am 12:27 AM

laravelispopularforfull-stackdevelopmentBecauseItOffersAMESAMLESSEAMLESTBBOCKENDPOWERANDFRONDENDFLECTION.1) itsBackEndCapabilities, likeeloquentorm, simplifydatabaseintercations.2) theBladetemplatingEngineallowsforclean, dynamichtmltemplates.3) larvelmix

화상 회의 대결 : 원격 회의에 적합한 플랫폼 선택화상 회의 대결 : 원격 회의에 적합한 플랫폼 선택Apr 25, 2025 am 12:26 AM

화상 회의 플랫폼을 선택할 때의 주요 요소에는 사용자 인터페이스, 보안 및 기능이 포함됩니다. 1) 사용자 인터페이스는 줌과 같은 직관적이어야합니다. 2) 보안에주의를 기울여야하며 Microsoft Teams는 엔드 투 엔드 암호화를 제공합니다. 3) 기능은 요구 사항을 일치시키기 위해 필요하며 Googlemeet은 짧은 회의에 적합하며 Ciscowebex는 고급 협업 도구를 제공합니다.

최신 Laravel과 호환되는 데이터베이스 버전은 무엇입니까?최신 Laravel과 호환되는 데이터베이스 버전은 무엇입니까?Apr 25, 2025 am 12:25 AM

Laravel10의 최신 버전은 MySQL 5.7 이상, PostgreSQL 9.6 이상, SQLite 3.8.8 이상, SQLServer 2017 이상과 호환됩니다. 이러한 버전은 JSON 데이터 유형 MySQL5.7과 같은 Laravel의 ORM 기능을 지원하여 쿼리 및 스토리지 효율성을 향상시키기 때문에 선택됩니다.

Laravel을 풀 스택 프레임 워크로 사용하는 이점Laravel을 풀 스택 프레임 워크로 사용하는 이점Apr 25, 2025 am 12:24 AM

laravelisanexcellentchoiceforfull-stackdevelopmentduetoitsrobustfeaturesandeaseofuse.1) 1) itsimplifiescomplextaskswithitsmodernphpsyntaxandtoolslakeforfront-endandeloquentormforback-end.2) laravel'secosystem, entercancesancancesancancessancancesancancesancesancesancancesnan

Laravel의 최신 버전은 무엇입니까?Laravel의 최신 버전은 무엇입니까?Apr 24, 2025 pm 05:17 PM

LARAVEL10, RELEARTESTERSION. ISTHELATESTVERSION. ISTHELATESTERSION.ITFEATURES : 1) 개선 된 오류가 개선 된 사람을 사용하여 개선되었습니다.

최신 Laravel 버전은 개발을 어떻게 단순화합니까?최신 Laravel 버전은 개발을 어떻게 단순화합니까?Apr 24, 2025 pm 05:01 PM

thelatestlaravelversionenhancesdevelopmentwith : 1) simplifiedroutingusingiMplicitModelBinding, 2) enloquentCapabilities withNeweRyMethods, 및 3) 개선 된 개선 된 개선 된 kepportOndHefeatureslikeNameDarguments,

최신 Laravel 버전의 릴리스 노트는 어디에서 찾을 수 있습니까?최신 Laravel 버전의 릴리스 노트는 어디에서 찾을 수 있습니까?Apr 24, 2025 pm 04:53 PM

laravel.com/docs에서 최신 Laravel 버전의 릴리스 노트를 찾을 수 있습니다. 1) 릴리스 노트는 새로운 기능, 버그 수정 및 개선에 대한 자세한 정보를 제공합니다. 2) 새로운 기능의 적용을 이해하는 데 도움이되는 예와 설명이 포함되어 있습니다. 3) 새로운 기능의 잠재적 복잡성과 후진 호환성 문제에주의하십시오. 4) 릴리스 노트를 정기적으로 검토하면 업데이트를 유지하고 혁신을 고무시킬 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음