list

(PHP 4, PHP 5, PHP 7)

listAssigne des variables comme si elles étaient un tableau

Description

list ( mixed $var1 [, mixed $... ] ) : array

Tout comme array(), list() n'est pas une véritable fonction, mais un élément de langage, qui permet de rassembler les variables varname, ... sous forme de tableau, pour les assigner en une seule ligne.

Note:

Avant PHP 7.1.0, list() fonctionne uniquement sur un tableau d'indice numérique et suppose que l'indice numérique commence à 0.

Avertissement

Avec PHP 5, list() assigne les valeurs commençant avec le paramètre le plus à droite. Avec PHP 7, list() commence avec le paramètre le plus à gauche.

Si vous utilisez des variables simples, vous n'avez pas à vous en préoccuper. Mais, si vous utilisez des tableaux avec des indices, vous vous attendrez généralement à ce que l'ordre des indices du tableau soit les mêmes que ceux écrit dans list(), de la gauche, vers la droite, ce qui n'est pas le cas dans PHP 5, qui faisait l'assignation dans l'ordre inverse.

D'une manière générale, il est conseillé de ne pas se fier à un ordre spécifique d'exécution, car cela pourrait changer à l'avenir.

Liste de paramètres

var1

Une variable.

Valeurs de retour

Retourne le tableau assigné.

Historique

Version Description
7.1.0 Il est maintenant possible de spécifier les clés dans la list(). Cela permet de déstructurer des tableaux avec des clés non-entières ou non séquentielles.
7.0.0 L'ordre dans lequel l'opération d'assignation est exécutée a changé.
7.0.0 Les expressions de list() ne peuvent plus être complètement vide.
7.0.0 Les chaînes de caractères ne peuvent plus être défaites.

Exemples

Exemple #1 Exemple avec list()

<?php

$info 
= array('coffee''brown''caffeine');

// Liste toutes les variables
list($drink$color$power) = $info;
echo 
"$drink is $color and $power makes it special.\n";

// Liste certaines variables
list($drink, , $power) = $info;
echo 
"$drink has $power.\n";

// Ou bien, n'utilisons que le troisième
list( , , $power) = $info;
echo 
"I need $power!\n";

// list() ne fonctionne pas avec les chaînes de caractères
list($bar) = "abcde";
var_dump($bar); // NULL
?>

Exemple #2 Exemple d'utilisation de list()

<table>
 <tr>
  <th>Employee name</th>
  <th>Salary</th>
 </tr>

<?php
$result 
$pdo->query("SELECT id, name, salary FROM employees");
while (list(
$id$name$salary) = $result->fetch(PDO::FETCH_NUM)) {
    echo 
" <tr>\n" .
          
"  <td><a href=\"info.php?id=$id\">$name</a></td>\n" .
          
"  <td>$salary</td>\n" .
          
" </tr>\n";
}

?>

</table>

Exemple #3 Utilisation d'un sous-list()

<?php

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

var_dump($a$b$c);

?>
int(1)
int(2)
int(3)

Exemple #4 Utilisation de list() en tenant compte de l'ordre

<?php

$info 
= array('coffee''brown''caffeine');

list(
$a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

Cet exemple donne le résultat suivant (notez l'ordre d'affichage des éléments, en comparaison avec l'ordre dans lequel ils ont été écrits dans la syntaxe de list()) :

Résultat de l'exemple ci-dessus en PHP 7 :

array(3) {
  [0]=>
  string(6) "coffee"
  [1]=>
  string(5) "brown"
  [2]=>
  string(8) "caffeine"
}

Résultat de l'exemple ci-dessus en PHP 5 :

array(3) {
  [2]=>
  string(8) "caffeine"
  [1]=>
  string(5) "brown"
  [0]=>
  string(6) "coffee"
}

Exemple #5 list() et l'ordre de définition des index

L'ordre dans lequel les indices d'un tableau sont traités par list() sont définis est non pertinent.

<?php
$foo 
= array(=> 'a''foo' => 'b'=> 'c');
$foo[1] = 'd';
list(
$x$y$z) = $foo;
var_dump($foo$x$y$z);

Etant donné la sortie suivante (notez l'ordre des éléments comparés et dans quel ordre ils ont été écrits dans la syntaxe de la list()) :

array(4) {
  [2]=>
  string(1) "a"
  ["foo"]=>
  string(1) "b"
  [0]=>
  string(1) "c"
  [1]=>
  string(1) "d"
}
string(1) "c"
string(1) "d"
string(1) "a"

Exemple #6 list() avec des clés

Depuis PHP 7.1.0 list() peut maintenant contenir également des clés explicites, qui peuvent être donnés comme des expressions arbitraires. Le mixage des clés entier et chaîne de caractères est autorisé; Toutefois, les éléments avec et sans clés ne peuvent pas être mélangés.

<?php
$data 
= [
    [
"id" => 1"name" => 'Tom'],
    [
"id" => 2"name" => 'Fred'],
];
foreach (
$data as ["id" => $id"name" => $name]) {
    echo 
"id: $id, name: $name\n";
}
echo 
PHP_EOL;
list(
=> $second=> $fourth) = [1234];
echo 
"$second$fourth\n";

L'exemple ci-dessus va afficher :

id: 1, name: Tom
id: 2, name: Fred

2, 4

Voir aussi

  • each() - Retourne chaque paire clé/valeur d'un tableau
  • array() - Crée un tableau
  • extract() - Importe les variables dans la table des symboles