是否需要显式地通过引用传递?

发布于 2024-11-18 06:42:06 字数 117 浏览 2 评论 0原文

例如 shuffle(&$array);

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

for example shuffle(&$array);

is it a bad practice to leave out the & sign when passing argument to functions like this one? Because it's working without it too...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

穿越时光隧道 2024-11-25 06:42:06

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

You don't need to pass it; it's implicitly understood to be a reference. The documentation for these types of functions show it merely to communicate the fact that this will not be copied, but referenced.

空城仅有旧梦在 2024-11-25 06:42:06

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

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

In PHP 5.3 it is bad, in earlier versions I suppose on some sort of meta way it can help the next person to read the code, but it generally is not the best idea just because it doesn't really do anything and most people will be confused by its inclusion (why is this person doing that? I don't get it...). & is used only four times:

  • Assigning a variable reference: $a =& $b (a references b)
  • parameters: function inc(&$b){$b++;} (b will now increment outside of func)
  • returns: function &get_thing(){ static $thing; return $thing; } (You can now modify the static value)
  • Iterations: foreach($var as $key=>&$val){$val++;}
夜血缘 2024-11-25 06:42:06

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

当函数的参数要通过引用传递时,应在函数定义中指定。您可以在 shuffle 的 PHP 手册页中看到这一点。

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

No, it is not bad practice. In fact, it is good practice.

When arguments to functions are to be passed by reference, that should be specified in the function definition. You can see that this is so in the PHP manual page for shuffle.

Call-time pass-by-reference (as in, shuffle(&$arr)) is poor practice. It is deprecated as of PHP 5.3 and will raise a warning. This is because it can cause all kinds of kooky problems if a function isn't expecting its argument to be a reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文