将变量传递给PHP中的函数

Web*_*ice 1 php arguments function

我有以下PHP函数:

 function func_name($name = 'John', $country = 'USA')
  {
  do something;
  }
Run Code Online (Sandbox Code Playgroud)

现在,我尝试将变量传递给函数,如下所示:

func_name($name = 'Jack', $country = 'Brazil');

我知道,我们可以很容易地通过它, func_name('jack', 'Brazil');但是上面的功能只是一个例子。实际的函数大约有20个参数,并且都具有默认值,有些根本没有传递给函数

所以我想知道是否适合作为参数传递参数 func_name($name = 'Jack', $country = 'Brazil');

Jac*_*lin 5

您可以传递数组吗?

function something($arr) {
    $name = $arr['name'];
}


function something(Array("name"=>"jack", "country"=>"UK"));
Run Code Online (Sandbox Code Playgroud)


dec*_*eze 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'));
Run Code Online (Sandbox Code Playgroud)