簡體   English   中英

PHP-如何將數組拆分為變量並傳遞給函數?

[英]PHP - How to split array into variables and pass to a function?

PHP中有一些帶有不同數量參數的函數。 我不知道將要調用哪個函數,但是該函數及其參數將像這樣的數組傳遞給調用函數

function func1($a,$b){...}
function func2($a){...}
$calls  = [func1=>[arg1, arg2], func2=>[arg1]]

我需要調用每個函數及其參數。 我不知道如何將參數作為不同的變量傳遞。 這是我的代碼

$func_names = array_keys($calls);
$i = 0;
foreach($calls as $call){
    $func_names[$i]($calls[$func_names[$i++]]);
    //$func_names[$i]($call); same as above line
}

在每個迭代中,每個函數的參數數組都將傳遞給函數,而不是分別傳遞給數組的每個項。 我怎么解決這個問題?

謝謝

使用call_user_func_array

mixed call_user_func_array ( callable $callback , array $param_arr )

鏈接的PHP手冊中的示例-

<?php
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
<?php

function a($foo) {
    echo $foo, "\n";
}
function b($bar, $baz) {
    echo $bar, ' and ', $baz, "\n";
}

$calls  = ['a'=>['apples'], 'b'=>['bananas','banjos']];

foreach($calls as $k => $v) $k(...$v);

輸出:

apples
bananas and banjos

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM