将变量传递给PHP中的函数

时间:2011-07-03 11:05:06

标签: php function arguments

我有以下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');

是否合适

2 个答案:

答案 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'));