PHP:将变量名传递给函数时是否需要更改它们?
我有一个body函数和一个在第一个函数中调用的函数 如下所示,在第二个函数中使用时,我不会更改参数名称 是否需要更改参数名称以在_display_bar()内使用;?如果我不这样做,会有什么副作用PHP:将变量名传递给函数时是否需要更改它们?,php,variables,parameters,Php,Variables,Parameters,我有一个body函数和一个在第一个函数中调用的函数 如下所示,在第二个函数中使用时,我不会更改参数名称 是否需要更改参数名称以在_display_bar()内使用;?如果我不这样做,会有什么副作用 function main_func($form, &$form_state, $key, $code) { $output = ''; ... $output .= _display_navbar($trans, $status_names); re
function main_func($form, &$form_state, $key, $code) {
$output = '';
...
$output .= _display_navbar($trans, $status_names);
return $output
}
function _display_navbar($trans, $status_names) {
$trans = 'bla';
$status_names = 'another bla';
$bar = $trans . ':' .$status_names;
return $bar;
};
变量具有函数作用域。除非特别声明,否则名称仅在函数内部有效。它们不会流入其他范围。没有副作用。您不需要使用唯一的名称 变量具有函数作用域。除非特别声明,否则名称仅在函数内部有效。它们不会流入其他范围。没有副作用。您不需要使用唯一的名称 一旦变量被传递给函数,变量的名称就不重要了。只传递数据。因此,您的功能可以是:
function _display_navbar($foo, $bar) {
$foo = 'bla';
return $bar;
}
无论变量名是什么,它都将返回作为第二个参数传递的内容。一旦变量传递给函数,变量名就不重要了。只传递数据。因此,您的功能可以是:
function _display_navbar($foo, $bar) {
$foo = 'bla';
return $bar;
}
无论变量名是什么,它都将返回曾经作为第二个参数传递的名称。作为函数参数传递的名称在调用时必须在范围内 它们是否与形式函数参数同名并不重要,但您必须认识到,仅仅因为它们具有相同的名称并不意味着将它们纳入范围 因此,在您的代码中:
function main_func($form, &$form_state, $key, $code) {
$output = '';
...
$output .= _display_navbar($trans, $status_names);
最后一行将不正确,除非
$trans
和$status\u名称当时在作用域中。作为函数参数传递的名称必须在调用时在作用域中
它们是否与形式函数参数同名并不重要,但您必须认识到,仅仅因为它们具有相同的名称并不意味着将它们纳入范围
因此,在您的代码中:
function main_func($form, &$form_state, $key, $code) {
$output = '';
...
$output .= _display_navbar($trans, $status_names);
最后一行将不正确,除非$trans
和$status\u名称当时在范围内。这实际上并不重要。但是你最好不要有相同的名字——这很令人困惑。让我给你举个例子$在第一次函数调用sum后,s将有3个;7第二次函数调用后求和。这些参数的名称与函数参数的名称不同
完全回答你的问题-绝对没有副作用
function main()
{
$a = 1;
$b = 2;
$s = sum($a, $b);
$d = 3;
$e = 4;
$s = sum($d, $e);
}
function sum($first, $second)
{
$ret = $first + $second;
return $ret;
}
其实没关系。但是你最好不要有相同的名字——这很令人困惑。让我给你举个例子$在第一次函数调用sum后,s将有3个;7第二次函数调用后求和。这些参数的名称与函数参数的名称不同
完全回答你的问题-绝对没有副作用
function main()
{
$a = 1;
$b = 2;
$s = sum($a, $b);
$d = 3;
$e = 4;
$s = sum($d, $e);
}
function sum($first, $second)
{
$ret = $first + $second;
return $ret;
}
不,它不是:不,它不是:我不会说它令人困惑,它完全可以预期,有时传递给函数的参数可能与形式参数具有相同的名称。变量名毕竟应该是有意义的!我不会说这很混乱,我们完全可以预料,有时传递给函数的参数可能与形式参数具有相同的名称。变量名毕竟应该是有意义的!