Es gibt ZWEI Verwendungszwecke für das PHP-Token mit Auslassungspunkten (...) Verpackung ein Array und Auspacken eines Arrays. Beide Zwecke gelten für Funktionsargumente.
Pack
Wenn Sie beim Definieren einer Funktion eine dynamische Anzahl von Variablen benötigen, die für die Funktion bereitgestellt werden (dh Sie wissen nicht, wie viele Argumente für diese Funktion beim Aufrufen im Code bereitgestellt werden), verwenden Sie das Auslassungszeichen (...) to Erfassen Sie alle verbleibenden Argumente, die für diese Funktion bereitgestellt wurden, in einem Array, auf das innerhalb des Funktionsblocks zugegriffen werden kann. Die Anzahl der von Auslassungspunkten (...) erfassten dynamischen Argumente kann null oder mehr betragen.
Zum Beispiel :
// 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
Wenn das Packen bei der Funktionsinstanziierung verwendet wird, erfasst die Ellipse (...) alle verbleibenden Argumente , dh Sie können immer noch eine beliebige Anzahl von anfänglichen, festen (Positions-) Argumenten haben:
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
Auspacken
Wenn Sie beim Aufrufen einer Funktion die Argumente, die Sie für diese Funktion angeben, zuvor zu einem Array zusammengefasst haben, verwenden Sie alternativ das Auslassungszeichen (...) mit , um dieses Array in einzelne Argumente zu konvertieren, die für die Funktion bereitgestellt werden. Jedes Array-Element wird dem jeweiligen Element zugewiesen Funktionsargumentvariable, die in der Funktionsdefinition genannt wird.
Beispielsweise:
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
Das Entpacken ist besonders nützlich, wenn Sie Array-Funktionen zum Bearbeiten von Arrays oder Variablen verwenden.
Beispiel: Entpacken des Ergebnisses von 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