【问题标题】:Is it necessary to pass by reference explicitly?是否有必要显式地通过引用传递?
【发布时间】:2011-07-01 21:54:13
【问题描述】:

例如shuffle(&$array);

在将参数传递给这样的函数时省略& 符号是一种不好的做法吗?因为它也可以在没有它的情况下工作......

【问题讨论】:

    标签: php variables reference pass-by-reference


    【解决方案1】:

    你不需要通过它;它被隐含地理解为参考。这些类型的函数的文档表明它只是为了传达这样一个事实,即不会被复制,而是被引用。

    【讨论】:

      【解决方案2】:

      在 PHP 5.3 中它很糟糕,在早期版本中,我想在某种元方式上它可以帮助下一个人阅读代码,但它通常不是最好的主意,因为它并不是真的 做任何事情,大多数人都会对它的包含感到困惑(为什么这个人这样做?我不明白......)。 & 只使用了四次:

      • 分配变量引用:$a =& $b(a 引用 b)
      • 参数:function inc(&$b){$b++;}(b 现在将在 func 之外递增)
      • 返回:function &get_thing(){ static $thing; return $thing; }(您现在可以修改静态值)
      • 迭代次数:foreach($var as $key=>&$val){$val++;}

      【讨论】:

      • 我在第三个中没有看到&
      【解决方案3】:

      不,这不是坏习惯。事实上,这是的做法。

      当函数的参数通过引用传递时,应该在函数定义中指定。在PHP manual page for shuffle中可以看到是这样的。

      调用时传递引用(如shuffle(&$arr))是不好的做法。自 PHP 5.3 起已弃用,并会发出警告。这是因为如果一个函数不期望它的参数是一个引用,它可能会导致各种奇怪的问题。

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 2016-07-21
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-20
        相关资源
        最近更新 更多