日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

5个php实例,细致说明传值与传引用的区别

發布時間:2024/6/3 php 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5个php实例,细致说明传值与传引用的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 傳值:是把實參的值賦值給行參 ,那么對行參的修改,不會影響實參的值
  • 傳引用 :真正的以地址的方式傳遞參數傳遞以后,行參和實參都是同一個對象,只是他們名字不同而已對行參的修改將影響實參的值
  • 說明:

  • 傳值:根copy是一樣的。打個比方,我有一橦房子,我給你建筑材料,你建了一個根我的房子一模一樣的房子,你在你的房子做什么事都不會影響到我,我在我的房子里做什么事也不會影響到你,彼此獨立。
  • 傳引用:讓我想起了上大學時學習C語言的指針了,感覺差不多。打個比方,我有一橦房子,我給你一把鑰匙,我們二個都可以進入這個房子,你在房子做什么都會影響到我。
  • 一,php實例

    1,傳值

    [php]?view plain?copy
  • <?php????
  • $param1=1;???????????????//定義變量1????
  • $param2=2;???????????????//定義變量2????
  • $param2?=?$param1;???????//變量1賦值給變量2????
  • echo?$param2;????????????//顯示為1????
  • ?>????


  • 2,傳引用

    [php]?view plain?copy
  • <?php????
  • $param2=1;???????????????//定義變量2????
  • $param1?=?&$param2;??????//將變量2的引用傳給變量1????
  • echo?$param2;????????????//顯示為1????
  • $param1?=?2;?????????????//把2賦值給變量1????
  • echo?$param2;????????????//顯示為2????
  • ?>????

  • 3,函數傳值

    [php]?view plain?copy
  • <?php????
  • //傳值????
  • $param1?=?1;????????????????????????????//定義變量1????
  • function?add($param2)???????????????????//傳參數????
  • {????
  • ????$param2=3;??????????????????????????//把3賦值給變量2????
  • }????
  • $param3=add($param1);???????????????????//調用方法add,并將變量1傳給變量2????
  • echo??'<br>$param1=='.$param1.'<br>';???//顯示為$param1==1????
  • echo??'<br>$param2=='.$param2.'<br>';???//顯示為$param2==??因為$param2是局部變量,所以不能影響全局????
  • echo??'<br>$param3=='.$param3.'<br>';???//顯示為$param3==??因為add方法沒有返回值,所以$param3為空????
  • ?>????

  • 4,函數傳引用

    [php]?view plain?copy
  • <?php????
  • //傳值????
  • $param1?=?1;?????????????????????????????//定義變量1????
  • function?add(&$param2)???????????????????//傳參數????
  • {????
  • ????$param2=3;??????????????????????????//把3賦值給變量2????
  • //????return?$param2;???????????????????//返回變量2????
  • }????
  • echo??'<br>$param1=='.$param1.'<br>';???//顯示為$param1==1??沒對變量1進行操作????
  • $param3=add($param1);???????????????????//調用方法add,并將變量1的引用傳給變量2????
  • echo??'<br>$param1=='.$param1.'<br>';???//顯示為$param1==3??調用變量過程中,$param2的改變影響變量1,雖然沒有return????
  • echo??'<br>$param2=='.$param2.'<br>';???//顯示為$param2==???因為$param2局部變量,所以不能影響全局????
  • echo??'<br>$param3=='.$param3.'<br>';???//顯示為$param3==???如果把方法里面的return注釋去掉的話就為$param3==3????
  • ?>????

  • 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>';???//顯示為$param3==2????
  • echo??'<br>$param4=='.$param4.'<br>';???//顯示為$param4==2????
  • echo??'<br>$param1=='.$param1.'<br>';???//顯示為$param1==2??調用變量過程中,$param2的改變影響變量1????
  • ????
  • $param3++;????
  • ????
  • /*下面顯示為$param1==3,這是因為$param2和$param1引用到同一個地方,??
  • ?*?返回值前面加了地址符號還是一個引用$param3=&add($param1);??
  • ?*?這樣$param3,$param2和$param1引用到同一個地方,當$param3++;時,??
  • ?*?$param1會被改變*/????
  • echo??'<br>$param1=='.$param1.'<br>';??????
  • ????
  • $param4++;????
  • /*?下面顯示為$param1==3,這里為什么是3而不是4呢,這是因為返回值前面沒有??
  • ?*?地址符號,它不是一個引用所以當$param4改變時不會影響$param1*/????
  • 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实例,细致说明传值与传引用的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。