欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP的引用操作符& 的使用及注意事项

程序员文章站 2022-05-30 12:14:44
...
PHP的引用操作符&,熟悉C的都知道C中有一个被称为指针的东西,指针就是指向内存地址的。这个&也是具有同样的功能的。

看如下代码:

$source="110";
$a=$source;
$b=&$source;
$source="120";
echo $a."\r\n",$b;

这段代码运行之后你会发现一个问题,$a的值并没有根据第四行代码$source的值改变而变化依然是原来的赋值“110”,这个很好理解,$a赋值的时候$source的值就是110,她只是把$source的值copy一个给了自己。

显然你也会注意到变量$b的值发生了变化,$a和变量$b几乎是同时的赋值,为什么出现了如此巨大的差异呢——一个管打人的一个管救人的,差异够大哦!

这就是PHP的引用操作符&的问题了,变量$b因为在赋值的时候应用到了&导致,$b不是copy“110”给自己而是,直接指向了$source的老巢,以后$source就是他$b了。$source 不管怎么变化都会导致$b的变化——很像是一个主机连接两个显示器的关系,既然是这样的关系了$b的变化当然会导致$source的变化了

看:

$b=122;
echo $source;

输出的结果:122,知道了吧这两个变量从此就是一个“人”了,不要欺负他们哦!

其实为了程序的可读性和随后的编程的误操作,我是不推荐使用这个&引用操作符的,你想啊。你在10000行前,使用了一个$b=&$source;到10000行之后你就不一定记得了,万一你不小心赋错了值,排错的时候就够你喝一壶了!呵呵……

其实这个操作符更多的是用在了数据库连接上,因为我们创建数据库连接对象的时候,往往只需要一个,太多了没用啊。

假设我们有一个类:

class MysqlConnect{} //用来创建数据库连接,那么我们每次调用的时候可以这样写
  
$conn=& new MysqlConnect();

这样的写法可以保证数据库的连接不会被重复的创建,耗费系统资源。但是如果你真的需要多个不同的连接,你千万不要这样写哦。

当然创建对象的时候这个PHP引用操作符确实是有用的,如果你一个PHP脚本程序上创建了上千个对象的话,系统的开销确实是很大的。如果没有必要创建多个的,尽量使用&吧!