0

我有一个主体函数和一个在第一个函数中调用的函数。

如下所示,我在第二个函数中使用时没有更改参数名称。

是否需要更改参数名称以在 _display_bar(); 中使用?如果我不这样做会有什么副作用?

    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;
    };
4

4 回答 4

2

变量具有函数作用域。除非您特别声明,否则名称仅在函数内部有效。它们不会渗入其他范围。没有副作用。您不需要使用唯一的名称。

于 2013-02-05T11:35:38.063 回答
1

一旦将变量传递给函数,变量的名称就不再重要了。只有数据通过。所以你的功能可能是这样的:

function _display_navbar($foo, $bar) {
   $foo = 'bla';
   return $bar;
}

无论变量名是什么,它都会返回作为第二个参数传递的内容。

于 2013-02-05T11:35:41.440 回答
1

作为函数参数传递的名称必须在它们被调用时的范围内。

它们是否与正式函数参数具有相同的名称并不重要,但您必须认识到,仅仅因为它们具有相同的名称并不意味着将它们带入范围。

因此,在您的代码中:

function main_func($form, &$form_state, $key, $code) {
    $output = '';
    ...
    $output .= _display_navbar($trans, $status_names);

最后一行将是不正确的,除非 $trans并且$status_names当时在范围内。

于 2013-02-05T11:36:25.580 回答
1

其实没关系。但是你最好不要有相同的名字——这很混乱。让我给你举个例子。$s 在第一次调用 sum 后将有 3;7 在第二个函数调用 sum 之后。参数的名称与函数参数名称不同。

完全回答您的问题 - 绝对没有副作用。

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;
}
于 2013-02-05T11:41:03.327 回答