PHP 可以轻松地将数组解构为单独的变量以传递给函数

Ran*_*inn 3 php arrays

假设我有一个像这样的 PHP 数组。

array(2) { ["page"]=> string(1) "a" ["subpage"]=> string(4) "gaga" }

我想将此数组的内容传递给函数调用,如下所示:

function doStuff($page, $subpage) {
 // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我如何将该数组解构为单个对象以传递给函数?函数的变量的顺序始终与数组中相应键的顺序相同。

Zac*_*ist 5

您可以使用array_values从数组中获取值,然后call_user_func_array使用值数组作为参数来调用函数。

<?php
$input = array( 'page' => 'a', 'subpage' => 'gaga' );
$values = array_values($input);
$result = call_user_func_array('doStuff', $values);
Run Code Online (Sandbox Code Playgroud)

或者,在较新版本的 PHP (>=5.6.x) 中,您可以使用运算符解包参数...

<?php
$input = array( 'page' => 'a', 'subpage' => 'gaga' );
$values = array_values($input);
$result = doStuff(...$values);
Run Code Online (Sandbox Code Playgroud)