欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
PHP中引用
PHP中引用&的使用注意事項
發(fā)布時(shí)間: 2006-12-05 10:25  作者: 9tmd   信息來(lái)源: PHPchina

之前一個(gè)朋友的帖子提到過(guò)這方面的疑問(wèn),這里簡(jiǎn)單整理一下,希望能讓更多新學(xué)php的朋友得到幫助。

php的引用(就是在變量或者函數、對象等前面加上&符號)是個(gè)高級話(huà)題,新手多注意,正確的理解php的引用很重要,對性能有較大影響,而且理解錯誤可能導致程序錯誤!

很多人誤解php中的引用跟C當中的指針一樣,事實(shí)上并非如此,而且很大差別。C語(yǔ)言中的指針除了在數組傳遞過(guò)程中不用顯式申明外,其他都需要使用*進(jìn)行定義,而php中對于地址的指向(類(lèi)似指針)功能不是由用戶(hù)自己來(lái)實(shí)現的,是由Zend核心實(shí)現的,php中引用采用的是“寫(xiě)時(shí)拷貝”的原理,就是除非發(fā)生寫(xiě)操作,指向同一個(gè)地址的變量或者對象是不會(huì )被拷貝的,比如下面的代碼:
$a = array(‘a(chǎn)‘,‘c‘...‘n‘);
$b = $a;
如果程序僅執行到這里,$b和$b是相同的,但是并沒(méi)有像C那樣,$a和$b占用不同的內存空間,而是指向了同一塊內存,這就是php和c的差別,并不需要寫(xiě)成$b=&$a才表示$b指向$a的內存,zend就已經(jīng)幫你實(shí)現了引用,并且zend會(huì )非常智能的幫你去判斷什么時(shí)候該這樣處理,什么時(shí)候不該這樣處理。

如果在后面繼續寫(xiě)如下代碼,增加一個(gè)函數,通過(guò)引用的方式傳遞參數,并打印輸出數組大小。
    function printArray(&$arr) //引用傳遞
    {
        print(count($arr));
    }

     printArray($a);

上面的代碼中,我們通過(guò)引用把$a數組傳入printArray()函數,zend引擎會(huì )認為printArray()可能會(huì )導致對$a的改變,此時(shí)就會(huì )自動(dòng)為$b生產(chǎn)一個(gè)$a的數據拷貝,重新申請一塊內存進(jìn)行存儲。這就是前面提到的“寫(xiě)時(shí)拷貝”概念。

如果我們把上面的代碼改成下面這樣:
    function printArray($arr)  //值傳遞
    {
        print(count($arr));
    }

     printArray($a);

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

大家可以測試一下上面兩行代碼的執行效率,比如外面加入一個(gè)循環(huán)1000次,看看運行的耗時(shí),結果會(huì )讓你知道不正確使用引用會(huì )導致性能下降30%以上。

拋磚引玉,歡迎大家討論!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
PHP 程序加速探索
PHP判斷一個(gè)數組是否是關(guān)聯(lián)數組
PHP中數組的區別
給PHP開(kāi)發(fā)者的PHP源碼(1):源碼結構
javascript數組與php數組的地址傳遞及值傳遞用法實(shí)例
php數組中刪除元素之重新索引的方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久