【问题标题】:function passed with argument as "& $x" outputs a value rather than error see the code below以“& $x”作为参数传递的函数输出一个值而不是错误,请参见下面的代码
【发布时间】:2011-05-12 15:59:22
【问题描述】:

下面是输出“15”的代码,为什么?

function zz(&$x){

$x = $x + 5;

}

$x = 10;

zz($x);
echo $x;

请解释

【问题讨论】:

  • 看起来像是 Zend 模拟考试中的一道题。
  • MAy b 但是在面试中被问到我回答错了..因此想把它放在这里..

标签: php pass-by-reference


【解决方案1】:

按设计工作。通过使用&,您通过引用传递$x,这意味着该函数对变量所做的任何事情都将对设置为10 的原始$x 执行。

如果你用过

function zz($x)

原来的$x 将保留在10,因为只有变量value 被传递给函数。

【讨论】:

    【解决方案2】:

    您作为参数传递的值不是变量的直接值,而是它通过引用传递,所以它给你 15 作为输出。

    谢谢!

    【讨论】:

      【解决方案3】:

      因为函数签名定义了传递给函数的值应该通过引用传递。

      如果你不知道这意味着什么,我建议阅读this paragraph on Wikipedia

      【讨论】:

        【解决方案4】:

        添加 & 意味着您通过引用传递 $x 变量。外部的值在函数内被更改,而不是在函数内被更改的副本。

        【讨论】:

          【解决方案5】:

          函数内部的$x 引用了与函数外部的$x 相同的值。

          当函数接受带有“&”的参数时,它的值不会复制到在函数作用域内创建的新变量中,而是对与给定参数相同的值的引用。

          here

          【讨论】:

            【解决方案6】:

            Using & Ampersand: Passing by Reference 符合函数中的目的。

            它只是简单地改变原始变量并再次将其返回到相同的变量名并为其分配新值。

            【讨论】:

              猜你喜欢
              • 2020-03-15
              • 2022-12-09
              • 2011-08-18
              • 1970-01-01
              • 1970-01-01
              • 2021-11-29
              • 1970-01-01
              • 2015-12-04
              • 2012-06-19
              相关资源
              最近更新 更多