2017-01-28 7 views
4

У меня есть метод типа переменные аргументы, определенный в PHP 7Pass массив переменной длины функции в PHP

function selectAll(string $sql, ...$params) { } 

Проблема я бегу в том, что иногда я хочу, чтобы вызвать этот метод, когда я уже есть массив, и я не могу просто передать переменную массива этому методу.

ответ

6

оператор Используйте знак распаковывать аргументы массива так же, как вы использовали в функции:

selectAll($str, ...$arr); 

Так как это:

function selectAll(string $sql, ...$params) { 
    print_r(func_get_args()); 
} 

$str = "This is a string"; 
$arr = ["First Element", "Second Element", 3]; 

selectAll($str, ...$arr); 

отпечатками

Array 
(
    [0] => This is a string 
    [1] => First Element 
    [2] => Second Element 
    [3] => 3 
) 

Eval для этого.


Если вы не используете оператор пейнтбольный в аргументах, вы будете в конечном итоге like this