Blog / Article #48
Les petits avantages de la fonction LIST de PHP

star

11 Avril 2019

Les petits avantages de la fonction list de php

php list

Cette fonction n'est pas souvent utilisée et généralement on la comprend tout de suite lorsqu'on la croise dans son état le plus courant quand il s'agit d'assigner plusieurs variables en même temps depuis un tableau.

Par exemple:

list($a, $b, $c) = $array;

Par contre ce n'est pas forcément simple dans tous les cas selon la syntaxe que vous utilisez.

D'ailleurs c'est à vous de décider si vous préférez utiliser list() ou le petit racourcis []. Certains devs pourraient soutenir que [] est ambigu avec la syntaxe du tableau abrégé, et préfèrent donc utiliser la fonction list(). J'utiliserai la version abrégée dans des exemples de code, (parce que c'est le turfu !?)

Sauter les éléments

Supposons que vous n'ayez besoin que du troisième élément d'un tableau, les deux premiers peuvent être ignorés en ne fournissant simplement pas de variable à leur positions.

$array = [1,2,3];
[, , $c] = $array;
// $c = 3

Notez également que la liste commencera toujours à l'index 0. Prenons par exemple le tableau suivant :

$names = [
  1 => 'arno',
  2 => 'robin',
  3 => 'victor',
];
list($a,$b,$c) = $names;
print_r([$a,$b,$c]);

Cet exemple va renvoyer une erreur qui ressemble à

PHP Notice: Undefined offset: 0 in /path/script.php on line 6

Array
(
   [0] =>
   [1] => arno
   [2] => robin
)

En effet, la première variable retirée avec la liste serait nulle, car il n'y a pas d'élément avec l'index 0. Cela peut ressembler à un bug, mais non, c'est comme ça. Heureusement il y a plus de possibilités...

$array = [
    'a' => 'foo',
    'b' => 'bar',
    'c' => 'baz',
];
['c' => $c, 'a' => $a] = $array;
print_r([$c,$a]);
Array
(
    [0] => baz
    [1] => foo
)

Comme vous pouvez le voir, vous pouvez modifier l'ordre comme vous le souhaitez et aussi sauter des éléments entièrement en nommant votre variable comme l'index du tableau. Sympa hein ?

Vous pouvez aussi utiliser list() dans des foreach par exemple

$persons = [
    [
        'name' => 'Abdoul',
        'id'   => 1,
    ],
    [
        'name' => 'Afid',
        'id'   => 2,
    ],
];
foreach ($persons as ['id' => $id, 'name' => $name]) {
    echo 'name ' . $name . ' id ' . $id . "\n";
}
// donnera
name Abdoul id 1
name Afid id 2

Cela peut être utile lors de l'analyse d'un fichier JSON ou CSV par exemple. Attention toutefois à ce que les clés non définies déclenchent quand même une Notice histoire de s'y retrouver pendant le debug, surtout si le projet a été codé il y a quelques mois déjà...

En résumé, il y a de très bons cas dans lesquels la list() peut être utile ! Alors bon dev !


Fais pas ton radin, mets un +1 ^^

Auteur de l'article
Retour a la liste