Передача переменных в функции в PHP - PullRequest
1 голос
/ 03 июля 2011

У меня есть следующая 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 ]

5 голосов
/ 03 июля 2011

Нет, это не правильный способ сделать это. 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'));
5 голосов
/ 03 июля 2011

Не могли бы вы передать массив?

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


function something(Array("name"=>"jack", "country"=>"UK"));
...