生活随笔
收集整理的這篇文章主要介紹了
5个php实例,细致说明传值与传引用的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳值:是把實參的值賦值給行參 ,那么對行參的修改,不會影響實參的值傳引用 :真正的以地址的方式傳遞參數傳遞以后,行參和實參都是同一個對象,只是他們名字不同而已對行參的修改將影響實參的值
說明:
傳值:根copy是一樣的。打個比方,我有一橦房子,我給你建筑材料,你建了一個根我的房子一模一樣的房子,你在你的房子做什么事都不會影響到我,我在我的房子里做什么事也不會影響到你,彼此獨立。傳引用:讓我想起了上大學時學習C語言的指針了,感覺差不多。打個比方,我有一橦房子,我給你一把鑰匙,我們二個都可以進入這個房子,你在房子做什么都會影響到我。
一,php實例
1,傳值
[php]?view plain
?copy <?php???? $param1=1;????????????????? $param2=2;????????????????? $param2?=?$param1;????????? echo?$param2;?????????????? ?>????
2,傳引用
[php]?view plain
?copy <?php???? $param2=1;????????????????? $param1?=?&$param2;???????? echo?$param2;?????????????? $param1?=?2;??????????????? echo?$param2;?????????????? ?>????
3,函數傳值
[php]?view plain
?copy <?php???? ?? $param1?=?1;?????????????????????????????? function?add($param2)????????????????????? {???? ????$param2=3;???????????????????????????? }???? $param3=add($param1);????????????????????? echo??'<br>$param1=='.$param1.'<br>';????? echo??'<br>$param2=='.$param2.'<br>';????? echo??'<br>$param3=='.$param3.'<br>';????? ?>????
4,函數傳引用
[php]?view plain
?copy <?php???? ?? $param1?=?1;??????????????????????????????? function?add(&$param2)????????????????????? {???? ????$param2=3;???????????????????????????? ?? }???? echo??'<br>$param1=='.$param1.'<br>';????? $param3=add($param1);????????????????????? echo??'<br>$param1=='.$param1.'<br>';????? echo??'<br>$param2=='.$param2.'<br>';????? echo??'<br>$param3=='.$param3.'<br>';????? ?>????
5,函數傳引用2
[php]?view plain
?copy <?php???? ???? ?? $param1?=?1;???? function?&add(&$param2)???? {???? ????$param2?=?2;???? ????return?$param2;???? }???? $param3=&add($param1);???? $param4=add($param1);???? echo??'<br>$param3=='.$param3.'<br>';????? echo??'<br>$param4=='.$param4.'<br>';????? echo??'<br>$param1=='.$param1.'<br>';????? ???? $param3++;???? ???? ? ? ? ???? echo??'<br>$param1=='.$param1.'<br>';?????? ???? $param4++;???? ? ???? echo??'<br>$param1=='.$param1.'<br>';???? ?>????
二,傳值與傳引用哪個更快
我做了一個測試,測試文件如是下
1,測試文件test1--傳引用
[php]?view plain
?copy <?php???? $param?=?array(1,2,3,4,5,6,7,8,9,10,11,12,1,3,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28);???? foreach($param?as?$k=>&$v){???? ?$v++;???? }???? ?>??
2,測試文件test2--傳值
[php]?view plain
?copy <?php???? $param?=?array(1,2,3,4,5,6,7,8,9,10,11,12,1,3,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28);???? foreach($param?as?$k=>$v){???? ?$v++;???? ?$param[$k]?=?$v;???? }???? ?>???? 測試如下:
php,傳值,傳引用
從上圖,看不出到底哪個好一點,感覺差不多。哈哈,不過我覺得傳引用會好一點,耗的資源少。上面測試沒有明顯的差距,可能是因為測試數據不夠大造成的,如果有更大數據來測試,我想會有明顯的不同。
總結
以上是生活随笔為你收集整理的5个php实例,细致说明传值与传引用的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。