2

我想将 $x 增加 1:

$x = 1;

function addOne($x) {
  $x++;
  return $x;
}

$x = addOne($x);

有没有办法通过参考来做到这一点,所以我不需要return $x,我可以写addOne($x)

4

2 回答 2

3

这就是您要查找的内容,由 . 指示的 by-ref 参数&

$x = 1;

function addOne(&$x) {
  $x++;
}

addOne($x);

一些注意事项:

  • By-ref 参数要求传入的值不是文字。鉴于我上面的例子,addOne(5)会抛出一个致命的异常
  • 对象(包括 stdClass 对象)不需要引用,因为从 PHP 5 开始,所有对象都是通过引用传递的。
  • 数组需要引用,因为 PHP 中的数组不被视为对象
  • 如果你想要一个通过引用传递的函数的返回值,你可以在函数名上指明引用(例如function &foo())。

有关参考的更多信息:http: //php.net/manual/en/language.references.php

于 2013-06-16T10:36:52.027 回答
1
$x = 1;

function addOne(&$x) {
    $x++;
}

addOne($x);

&符号表明它通过引用获取参数。所以它$x在函数中递增,它也会影响$x调用范围内的变量。

另请参阅: http: //php.net/references以快速了解它们。

于 2013-06-16T10:37:02.383 回答