list

(PHP 4, PHP 5, PHP 7, PHP 8)

listAssegna valori a delle variabili come se fossero un array

Descrizione

list(mixed $var1, mixed ...$... = ?): array

Come array(), questa non è in realtà una funzione, bensì un costrutto del linguaggio. list() è usata per assegnare valori ad una lista di variabili in una sola operazione.

Nota:

list() funziona solo su array numerici e si aspetta che gli indici numerici partano da 0.

Avviso

In PHP 5, list() assegna i valori partendo dal parametro più a destra. In PHP 7, list() comincia dal parametro più a sinistra.

Se si stanno usando variabili semplici, non ci si deve preoccupare di questo comportamento. Ma se si stanno usando array con indici ci si aspetta che l'ordine degli indici nell'array sia lo stesso scritto nella funzione list() da sinitra a destra; non è il caso in PHP 5, dal momento che sono assegnati in ordine inverso.

In generale, è sconsigliato fare affidamento su uno specifico ordine di operazioni, dal momento che questo può cambiare in futuro.

Avviso

La modifica dell'array durante l'esecuzione di list() (es. usando list($a, $b) = $b ha un comportamento indefinito.

Elenco dei parametri

var1

Una variabile.

Valori restituiti

Restituisce l'array assegnato.

Esempi

Example #1 esempio di list()

<?php

$info
= array('caffè', 'scuro', 'caffeina');

// assegna a tutte le variabili
list($bevanda, $colore, $componente) = $info;
echo
"Il $bevanda è $colore e la $componente lo rende speciale.\n";

// assegna solo in parte
list($bevanda, , $componente) = $info;
echo
"Il $bevanda ha la $componente.\n";

// oppure assegnamo solo l'ultima variabile
list( , , $componente) = $info;
echo
"Ho voglia di $componente!\n";

// list() non funziona con le stringhe
list($bar) = "abcde";
var_dump($bar); // NULL
?>

Example #2 Esempio di uso di list()

<table>
<tr>
<th>Nome dell'impiegato</th>
<th>Stipendio</th>
</tr>

<?php
$risultato
= $pdo_query("SELECT id, nome, stipendio FROM impiegati");
while (list(
$id, $nome, $stipendio) = $result->fetch(PDO::FETCH_NUM)) {
echo (
" <tr>\n".
" <td><a href=\"info.php?id=$id\">$nome</a></td>\n".
" <td>$stipendio</td>\n".
" </tr>\n");
}

?>

</table>

Example #3 Utilizzare list() annidate

<?php

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

var_dump($a, $b, $c);

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

Example #4 Utilizzo di list() con gli indici

<?php

$info
= array('caffè', 'nero', 'caffeina');

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

var_dump($a);

?>

Restituisce il seguente risultato (si noti l'ordine degli elementi rispetto all'ordine con cui sono stati scritti nella sintassi di list()).

Output of the above example in PHP 7:

array(3) {
  [2]=>
  string(8) "caffeina"
  [1]=>
  string(4) "nero"
  [0]=>
  string(5) "caffè"
}

Output of the above example in PHP 5:

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

Example #5 list() e ordine delle definizioni dell'indice

L'ordine con il quale sono definiti gli indici dell'array da consumare da parte di list() è irrilevante.

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

Restituisce il seguente risultato (si noti l'ordine degli elementi in rapporto a quello con cui sono scritti nella sintassi di 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"

Vedere anche:

  • each() - Restituisce la corrente coppia chiave/valore di un array e incrementa il puntatore dell'array
  • array() - Crea un array
  • extract() - Importa le variabili nella tabella dei simboli corrente da un array