在 PHP 8 中,如果將帶有鍵值的陣列傳遞給 $args 參數,call_user_func_array 會使用命名參數呼叫 callback 函式;如果使用的陣列只有值,則會以位置方式傳遞參數。
<?php
函式 test(字串 $param1, 字串 $param2): void
{
echo $param1.' '.$param2;
}
$args = ['hello', 'world'];
//hello world
call_user_func_array('test', $args);
$args = ['param2' => 'world', 'param1' => 'hello'];
//hello world
call_user_func_array('test', $args);
$args = ['unknown_param' => 'hello', 'param2' => 'world'];
//致命錯誤:未捕捉到的錯誤:未知的具名參數 $unknown_param
call_user_func_array('test', $args);
?>