Seperti yang telah disebutkan , pada PHP 5.6+ Anda dapat (harus!) Menggunakan ...
token (alias "operator percikan", bagian dari fungsionalitas fungsi variadik ) untuk dengan mudah memanggil suatu fungsi dengan sejumlah argumen:
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
Catatan: item array dipetakan ke argumen dengan posisi mereka di dalam array, bukan kunci mereka.
Sesuai komentar CarlosCarucce , bentuk argumen membongkar ini adalah metode tercepat sejauh ini dalam semua kasus. Dalam beberapa perbandingan, ini lebih cepat 5x daricall_user_func_array
.
Ke samping
Karena saya pikir ini sangat berguna (meskipun tidak terkait langsung dengan pertanyaan): Anda dapat mengetikkan petunjuk parameter percikan operator dalam definisi fungsi Anda untuk memastikan semua nilai yang diteruskan cocok dengan jenis tertentu.
(Ingatlah bahwa melakukan ini HARUS menjadi yang terakhir parameter Anda tetapkan dan bahwa ia menggabungkan semua parameter yang dilewatkan ke fungsi ke dalam array.)
Ini bagus untuk memastikan array berisi item dari tipe tertentu:
<?php
// Define the function...
function variadic($var, SomeClass ...$items)
{
// $items will be an array of objects of type `SomeClass`
}
// Then you can call...
variadic('Hello', new SomeClass, new SomeClass);
// or even splat both ways
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);