我有以下PHP函数:
function func_name($name = 'John', $country = 'USA')
{
do something;
}
现在,我试图将变量传递给函数,如下所示:
func_name($name = 'Jack', $country = 'Brazil');
我知道,我们可以轻松地将其作为func_name('jack', 'Brazil');
传递,但上述功能只是一个例子。实际函数有大约20个参数,都有默认值,有些根本没有传递给函数
所以我想知道将参数传递为func_name($name = 'Jack', $country = 'Brazil');
答案 0 :(得分:5)
你能传入一个数组吗?
function something($arr) {
$name = $arr['name'];
}
function something(Array("name"=>"jack", "country"=>"UK"));
答案 1 :(得分:5)
不,这不是正确的方法。 foo($bar = 'baz')
表示您像往常一样将'baz'
分配给变量$bar
。此分配操作会生成已分配的值,因此表达式$bar = 'baz'
的值为'baz'
。此值 'baz'
会传递给该函数。这些函数没有任何已分配给变量$bar
的线索。
换句话说,PHP不支持命名参数。
如果您的函数接受许多参数,其中全部或大部分是可选参数,请使用数组:
function foo(array $args = array()) {
// set default values for arguments not supplied
$args += array('name' => 'John', 'country' => 'USA', …);
// use $args['name'] etc.
// you could do extract($args), then use $name directly,
// but take care not to overwrite other variables
}
foo(array('country' => 'Japan'));