首頁 > 後端開發 > php教程 > PHP的引用運算子& 的使用及注意事項

PHP的引用運算子& 的使用及注意事項

高洛峰
發布: 2016-10-17 11:15:40
原創
3210 人瀏覽過

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腳本程式上創建了上千個物件的話,系統的開銷確實是很大的。如果沒有必要創建多個的,盡量使用&吧!


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板