91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP引用&符號的注意問題有哪些

發布時間:2021-10-18 16:45:31 來源:億速云 閱讀:112 作者:柒染 欄目:編程語言

PHP引用&符號的注意問題有哪些,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

PHP引用&符號是一個比較難掌握的知識點。新手們在實際編寫代碼時一定要多注意這一點,因為如果你對PHP引用&符號的使用理解錯誤,將會導致你所編寫的整個代碼出現錯誤。

很多人誤解php中的引用跟C當中的指針一樣,事實上并非如此,而且很大差別。C語言中的指針除了在數組傳遞過程中不用顯式申明外,其他都需要使用*進行定義,而php中對于地址的指向(類似指針)功能不是由用戶自己來實現的,是由Zend核心實現的,PHP引用&符號采用的是“寫時拷貝”的原理,就是除非發生寫操作,指向同一個地址的變量或者對象是不會被拷貝的,比如下面的代碼:

$a = array('a','c'...'n');  $b = $a;

如果程序僅執行到這里,$b和$b是相同的,但是并沒有像C那樣,$a和$b占用不同的內存空間,而是指向了同一塊內存,這就是php和c的差別,并不需要寫成$b=&$a才表示$b指向$a的內存,zend就已經幫你實現了引用,并且zend會非常智能的幫你去判斷什么時候該這樣處理,什么時候不該這樣處理。

如果在后面繼續寫如下代碼,增加一個函數,通過PHP引用&符號的方式傳遞參數,并打印輸出數組大小。

function printArray(&$arr) //引用傳遞      {          print(count($arr));      }        printArray($a);

上面的代碼中,我們通過PHP引用&符號把$a數組傳入printArray()函數,zend引擎會認為printArray()可能會導致對$a的改變,此時就會自動為$b生產一個$a的數據拷貝,重新申請一塊內存進行存儲。這就是前面提到的“寫時拷貝”概念。

如果我們把上面的代碼改成下面這樣:

function printArray($arr)  //值傳遞      {          print(count($arr));      }        printArray($a);


上面的代碼直接傳遞$a值到printArray()中,此時并不存在引用傳遞,所以沒有出現寫時拷貝。

大家可以測試一下上面兩行代碼的執行效率,比如外面加入一個循環1000次,看看運行的耗時,結果會讓你知道不正確使用PHP引用&符號會導致性能下降30%以上。

看完上述內容,你們掌握PHP引用&符號的注意問題有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

澄城县| 榆中县| 尚义县| 鞍山市| 调兵山市| 保康县| 河北区| 寿宁县| 堆龙德庆县| 武平县| 修武县| 天峻县| 内丘县| 满洲里市| 重庆市| 伊吾县| 城步| 桃园市| 禄劝| 靖远县| 雷山县| 图片| 柞水县| 名山县| 始兴县| 龙南县| 武宁县| 常州市| 乳源| 临沂市| 绥德县| 义马市| 泉州市| 巴里| 佛冈县| 诏安县| 合水县| 肃宁县| 巴南区| 扎兰屯市| 定结县|