php函数参数中的&符号是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/16 14:58:14
这是类中的一个函数
function base(& $get,& $post) {
$this->time = time();
$this->ip =util::getip();
$this->get=& $get;
$this->post=& $post;
$this->init_db();
$this->init_cache();
$this->init_user();
$this->init_template();
$this->checkbanned();
}
其中的&符号是什么意思?

&有两种功能。 1. 按位与 2.引用。 这里使用的是引用的功能。

这里的base函数把 $post和$get的引用传递给了 当前对象的post 和get属性中。

这样 在以后改变当前对象的 post和get 属性的值以后 之前定义的$post和$get 变量的值也跟着改变。 这就是引用。
下面是我写的测试代码,运行一下就明白了。
<?php
$get = 1;
$base($get);
echo $get ;
//输出结果会是 2 而不是 1
function base(& $get) {
$get++;
}
?>

在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。

PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:
<?php
$a =&$b
?>
这意味着 $a 和 $b 指向了同一个变量。
注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本):
<?php
$bar =& new fooclass();
$foo =& find_var ($bar);
?>
注: 不用 & 运算符导致对象生成了一个拷贝。如果你在类中用 $this,它将作用于该类当前的实例。没有用 & 的赋值将拷贝这个实例(例如对象)并且 $this 将作用于这个拷贝上,这并不总是想要的结果。由于性能和内存消耗的问题,通常你只