Ci sono due usi per la puntini di sospensione (...) PHP pegno -Pensate di loro come imballaggio un array e disimballaggio un array. Entrambi gli scopi si applicano agli argomenti della funzione.
pacco
Quando si definisce una funzione, se è necessario un numero dinamico di variabili fornite alla funzione (cioè, non si sa quanti argomenti verranno forniti a quella funzione quando viene chiamata nel codice) utilizzare i puntini di sospensione (...) per cattura tutti gli argomenti rimanenti forniti a quella funzione in un array accessibile all'interno del blocco funzione. Il numero di argomenti dinamici catturati dai puntini di sospensione (...) può essere zero o più.
Ad esempio :
// function definition
function sum(...$numbers) { // use ellipsis token when defining function
$acc = 0;
foreach ($numbers as $nn) {
$acc += $nn;
}
return $acc;
}
// call the function
echo sum(1, 2, 3, 4); // provide any number of arguments
> 10
// and again...
echo sum(1, 2, 3, 4, 5);
> 15
// and again...
echo sum();
> 0
Quando si utilizza la compressione nella creazione di istanze di funzioni, i puntini di sospensione (...) acquisiscono tutti gli argomenti rimanenti , ovvero è ancora possibile avere un numero qualsiasi di argomenti iniziali fissi (posizionali):
function sum($first, $second, ...$remaining_numbers) {
$acc = $first + $second;
foreach ($remaining_numbers as $nn) {
$acc += $nn;
}
return $acc;
}
// call the function
echo sum(1, 2); // provide at least two arguments
> 3
// and again...
echo sum(1, 2, 3, 4); // first two are assigned to fixed arguments, the rest get "packed"
> 10
disfare
In alternativa, quando si chiama una funzione, se gli argomenti forniti a quella funzione sono precedentemente combinati in un array, utilizzare il token con i puntini di sospensione (...) per convertire quell'array in singoli argomenti forniti alla funzione: ogni elemento dell'array è assegnato al rispettivo variabile dell'argomento della funzione denominata nella definizione della funzione.
Per esempio:
function add($aa, $bb, $cc) {
return $aa + $bb + $cc;
}
$arr = [1, 2, 3];
echo add(...$arr); // use ellipsis token when calling function
> 6
$first = 1;
$arr = [2, 3];
echo add($first, ...$arr); // used with positional arguments
> 6
$first = 1;
$arr = [2, 3, 4, 5]; // array can be "oversized"
echo add($first, ...$arr); // remaining elements are ignored
> 6
La decompressione è particolarmente utile quando si utilizzano funzioni di array per manipolare array o variabili.
Ad esempio, decomprimere il risultato di array_slice :
function echoTwo ($one, $two) {
echo "$one\n$two";
}
$steaks = array('ribeye', 'kc strip', 't-bone', 'sirloin', 'chuck');
// array_slice returns an array, but ellipsis unpacks it into function arguments
echoTwo(...array_slice($steaks, -2)); // return last two elements in array
> sirloin
> chuck