1. Accueil
  2. Articles
1 min de lecture
225 vues

Laravel Collections - la function chunk()

Image d'illustration pour Laravel Collections - la function chunk()

Dans cette 3e partie de notre série sur les collections nous allons voir la fonction chunk()

Description

Chunk en français se traduit par morceau. Cette méthode va donc te permettre de découper ta collection en morceaux, tout simplement !

chunk() va te retourner d'autres collections plus petites. Et c'est toi qui déterminera la taille des morceaux 👌🏽

Exemples d'utilisation

Code source #1

1$languages = collect([
2 "php",
3 "python",
4 "javascript",
5 "go",
6 "c#",
7 "java",
8 "cobol",
9 "basic"
10]);
11 
12$chunked_languages = $languages->chunk(3);
13print_r($chunked_languages);
1$languages = collect([
2 "php",
3 "python",
4 "javascript",
5 "go",
6 "c#",
7 "java",
8 "cobol",
9 "basic"
10]);
11 
12$chunked_languages = $languages->chunk(3);
13print_r($chunked_languages);

Résultat

1Illuminate\Support\Collection Object
2(
3 [items:protected] => Array
4 (
5 [0] => Illuminate\Support\Collection Object
6 (
7 [items:protected] => Array
8 (
9 [0] => php
10 [1] => python
11 [2] => javascript
12 )
13 )
14 [1] => Illuminate\Support\Collection Object
15 (
16 [items:protected] => Array
17 (
18 [3] => go
19 [4] => c#
20 [5] => java
21 )
22 )
23 [2] => Illuminate\Support\Collection Object
24 (
25 [items:protected] => Array
26 (
27 [6] => cobol
28 [7] => basic
29 )
30 )
31 )
32)
1Illuminate\Support\Collection Object
2(
3 [items:protected] => Array
4 (
5 [0] => Illuminate\Support\Collection Object
6 (
7 [items:protected] => Array
8 (
9 [0] => php
10 [1] => python
11 [2] => javascript
12 )
13 )
14 [1] => Illuminate\Support\Collection Object
15 (
16 [items:protected] => Array
17 (
18 [3] => go
19 [4] => c#
20 [5] => java
21 )
22 )
23 [2] => Illuminate\Support\Collection Object
24 (
25 [items:protected] => Array
26 (
27 [6] => cobol
28 [7] => basic
29 )
30 )
31 )
32)

Et ceci est assez pratique surtout si vous voulez afficher par exemple des données via un nombre préci.

Si par exemple on prend les col-*-* de bootstrap et qu'on veut afficher par colonne 3 données alors cette fonction peut parfaitement faire l'affaire.

Un exemple même pris dans la documentation de Laravel l'explique

1@foreach ($products->chunk(3) as $chunk)
2 <div class="row">
3 @foreach ($chunk as $product)
4 <div class="col-xs-4">{{ $product->name }}</div>
5 @endforeach
6 </div>
7@endforeach
1@foreach ($products->chunk(3) as $chunk)
2 <div class="row">
3 @foreach ($chunk as $product)
4 <div class="col-xs-4">{{ $product->name }}</div>
5 @endforeach
6 </div>
7@endforeach

Référence

Vous pouvez avoir tous les détails de cette fonction dans la documentation de Laravel