在函数的参数前使用&的目的是什么?

2021/01/30 02:21 · php ·  · 0评论

我看到了一些这样的函数声明:

function boo(&$var){
 ...
}

什么是&性格呢?

这是通过引用。函数内部的变量“指向”与调用上下文中的变量相同的数据。

function foo(&$bar)
{
  $bar = 1;
}

$x = 0;
foo($x);
echo $x; // 1

基本上,如果您$var在函数内部进行更改,则它将在外部进行更改。例如:

$var = 2;

function f1(&$param) {
    $param = 5;
}

echo $var; //outputs 2
f1($var);
echo $var; //outputs 5

它接受对变量的引用作为参数。

这意味着函数对参数(例如$var = "Hi!"所做的任何更改都会影响调用函数传递的变量。

通过引用传递

如果您熟悉C指针,就像将指针传递给变量一样。

除非不需要取消引用(如C)。

您正在传递$ var作为参考,这意味着在boo函数中修改$ var的实际值时会对其进行更新

例:

function boo(&$var) {
   $var = 10;
}

$var = 20;
echo $var; //gets 20
boo($var);
echo $var //gets 10

变量(&$ foo)之前的&符号(&)覆盖按值传递,以指定您要改为通过引用传递变量。

例如,如果您有以下内容:

function doStuff($variable) {
     $variable++;
}

$foo = 1;

doStuff($foo);
echo $foo; 
// output is '1' because you passed the value, but it doesn't alter the original variable

doStuff( &$foo ); // this is deprecated and will throw notices in PHP 5.3+
echo $foo; 
// output is '2' because you passed the reference and php will alter the original variable.

它可以双向工作。

function doStuff( &$variable) {
     $variable++;
}

$foo = 1;

doStuff($foo);
echo $foo; 
// output is '2' because the declaration of the function requires a reference.

如果有任何以&开头的函数,则表示它是通过引用函数调用的。它将返回对变量的引用,而不是值。

function reference_function( &$total ){
  $extra = $total + 10;
}

$total = 200;
reference_function($total) ;
echo $total; //OutPut 210
本文地址:http://php.askforanswer.com/zaihanshudecanshuqianshiyongdemudeshishenme.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!