Ada DUA kegunaan untuk elipsis (...) token PHP — anggap saja mereka sebagai pengepakan sebuah array dan membongkar sebuah array. Kedua tujuan tersebut berlaku untuk argumen fungsi.
Pak
Saat mendefinisikan sebuah fungsi, jika Anda memerlukan sejumlah variabel dinamis yang disediakan untuk fungsi tersebut (yaitu, Anda tidak tahu berapa banyak argumen yang akan diberikan ke fungsi itu ketika dipanggil dalam kode) gunakan token elipsis (...) untuk menangkap semua argumen tersisa yang disediakan untuk fungsi itu ke dalam larik yang dapat diakses di dalam blok fungsi. Jumlah argumen dinamis yang ditangkap oleh elipsis (...) bisa nol atau lebih.
Contoh :
// 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
Ketika pengepakan digunakan dalam fungsi instantiation, elipsis (...) menangkap semua argumen yang tersisa , yaitu, Anda masih dapat memiliki sejumlah argumen awal, tetap (posisi):
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
Membongkar
Alternatifnya, saat memanggil fungsi, jika argumen yang Anda berikan ke fungsi itu sebelumnya digabungkan ke dalam array, gunakan token elipsis (...) untuk mengonversi array itu menjadi argumen individual yang disediakan untuk fungsi — setiap elemen array ditetapkan ke masing-masing variabel argumen fungsi dinamai dalam definisi fungsi.
Sebagai contoh:
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
Pembongkaran sangat berguna saat menggunakan fungsi array untuk memanipulasi array atau variabel.
Misalnya, membongkar hasil dari 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