亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php函數的傳值與傳址(引用)詳解

2024-09-04 11:48:15
字體:
來源:轉載
供稿:網友

在php中我們函數傳值就比較簡單了,但可能有些朋友地天真無邪函數傳址或引用搞不明白,下面小編來給各位介紹在php中函數傳值與傳址(引用)介紹,希望對各位有所幫助。

php中引用的用法:

1. 變量的引用賦值: $a = &$b

2. 函數調用時的引用參數傳遞

   1) 早期php是在調用時通過&符號傳遞引用類型的變量, 比如: func(&$arg);

   2) 后來, 函數的引用類型參數被規定為需要在函數聲明時定義, 不如: function func(&$arg);

注:引用聲明時定義引用類型參數后,運行時引用參數傳遞被廢棄,需要在php.ini中增加allow_call_time_pass_reference來開啟.

3. 函數返回引用類型,這種應用方式需要聲明函數時,在函數名前增加&符號,并且,在調用時,要用引用賦值方式, 實例代碼如下:

  1. function &func() { 
  2.     return $a
  3. $a = func();  //這種調用方式得到的不是引用傳值 
  4. $a =& func(); //這樣調用才是引用傳值 

簡而言之,就是讓函數的返回一個引用類型的值,一個更實際的例子,代碼如下:

  1. $a = 1; 
  2. function &func(&$a) { 
  3.   return $a
  4. $b = func($a); 
  5. $c =& func($a); 
  6. $b = 2; 
  7. echo "a: $a, b: $b, c: $c. <br />/n"
  8. //輸出a: 1, b: 2, c: 1. 
  9. //可見對$b的修改不會影響$a 
  10. $c = 3; 
  11. echo "a: $a, b: $b, c: $c. <br />/n"
  12. //輸出a: 3, b: 2, c: 3. 
  13. //可見對$c的修改會影響$a 

php函數傳值的幾個細節,如下:

一、基本數據類型的傳值

  1. /* **************************************************** */  
  2. function testvar($k){ 
  3.  $k = 40; 
  4. $c = 30; 
  5. //給一個函數參數傳一個基本數據類型(整型,布爾,字符 ...), 實際上傳的就是值 ; 
  6. testvar($c); 
  7. echo $c;//結果是:30 
  8. function testvar2(&$k){ 
  9.  $k = 40; 
  10. $e = 30; 
  11. //給一個函數參數傳一個基本數據類型(整型,布爾,字符 ...), 實際上傳的y就是地址 ; 
  12. testvar2($e); 
  13. echo $e;//結果是:40 
  14.  
  15. /* **************************************************** */ 

二、數組(默認情況下是復制一份數據),如要傳地址則&$arr.

  1. $arr1 = array(-1,5,0); 
  2. function testArr($arr){ 
  3.  for($i=0;$i<count ($arr);$i++){ 
  4.   for($j=$i+1;$j<count($arr);$j++){ 
  5.    if($arr[$i]>$arr[$j]){ 
  6.     $temp = $arr[$i]; 
  7.     $arr[$i] = $arr[$j]; 
  8.     $arr[$j] = $temp
  9.    } 
  10.   } 
  11.  
  12.  } 
  13.  print_r($arr);  //結果:Array ( [0] => -1 [1] => 0 [2] => 5 )  
  14. testArr($arr1); 
  15. print_r($arr1);  //結果:Array ( [0] => -1 [1] => 5 [2] => 0 )  
  16.  
  17. function testArr2(&$arr){ 
  18.  for($i=0;$i</count><count ($arr);$i++){ 
  19.   for($j=$i+1;$j<count($arr);$j++){ 
  20.    if($arr[$i]>$arr[$j]){ 
  21.     $temp = $arr[$i]; 
  22.     $arr[$i] = $arr[$j]; 
  23.     $arr[$j] = $temp
  24.    } 
  25.   } 
  26.  
  27.  } 
  28. testArr($arr1); 
  29. print_r($arr1);  //結果:Array ( [0] => -1 [1] => 0 [2] => 5 ) 
  30. /* **************************************************** */ 

三、對象數據類型傳值

  1. class person{ 
  2.  public $name
  3.  public  $age
  4.  
  5. $a = new person(); 
  6. $a->name = '小明'
  7. $a->age = '20'
  8. //變量a在存的是對象的地址,把a賦給b這個變量,實際上就是賦了一個地址。 
  9. $b = $a
  10. $b->age = 30; 
  11. //echo $a->age.$b->age;//結果是:30 30 
  12. //給一個函數參數傳一個對象, 實際上傳的是這個對象的地址; 
  13. function test($k){ 
  14.  $k->age =40; 
  15. //調用 
  16. test($b); 
  17. //echo $a->age.$b->age;//結果是:40 40 
  18. </count

php函數的傳值與傳址有什么區別呢?對于這樣的問題我喜歡通過程序演示來獲取答案,讓我們來看一個演示記錄吧!實例代碼如下:

  1. <?php     
  2.          
  3. $i=100;     
  4.          
  5. function func($n){     
  6.          
  7.    $n=$n+100;     
  8.             
  9.    return $n;     
  10.             
  11. }     
  12. echo '1)函數傳值前變量$i的值:'.$i.'<br>';     
  13. echo '2)傳值后函數的返回值:'.func($i).'<br>';     
  14. echo '3)函數傳值后變量$i的值:'.$i.'<br>';     
  15. echo '4)函數傳址前變量$i的值:'.$i.'<br>';     
  16. echo '5)傳址后函數的返回值:'.func(&$i).'<br>';     
  17. echo '6)函數傳址后變量$i的值:'.$i.'<br>';     
  18. //echo func($i).'<br>';     
  19. ?> 
  20. /* 
  21. 程序輸出: 
  22. 1)函數傳值前變量$i的值:100 
  23. 2)傳值后函數的返回值:200 
  24. 3)函數傳值后變量$i的值:100 
  25. 4)函數傳址前變量$i的值:100 
  26. 5)傳址后函數的返回值:200 
  27. 6)函數傳址后變量$i的值:200 
  28. */ 

解釋:

1)直接輸出一個賦值$i=100的變量

2)func函數傳值返回一個算術相加的結果$=100+100

3)func函數傳值,其作用區域只限于函數內部,對外面的變量$i不會有影響

4)同上

5)func函數參數前多了個"&"符,表示傳址,和2)一樣,返回值是函數的算術運行結果。

6)func(&$i),變量指針指向$i的位置,可以理解為是對變量$i的操作,$i=$i+100;這時變量$i已經相當于重新被賦值

如果去掉上面代碼的第18行注釋,會得什么結果呢?

小結:傳址為了在執行函數的同時,同時改變函數參數值,而傳值不期望改變.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久人成| 中文字幕精品视频| 2019中文字幕全在线观看| 国产成人一区二| 欧美激情成人在线视频| 一区三区二区视频| 亚洲高清久久久久久| 欧洲精品毛片网站| 亚洲精品456在线播放狼人| 亚洲国产精品国自产拍av秋霞| 96精品久久久久中文字幕| 日本久久久久亚洲中字幕| 欧美成人第一页| 国产综合视频在线观看| 成人免费激情视频| 成人免费网站在线观看| 国产精品69久久久久| 国产一区二区三区四区福利| 欧美日韩爱爱视频| 成人妇女淫片aaaa视频| 91精品国产高清自在线| 久久人人爽人人爽爽久久| 成人亲热视频网站| 成人妇女免费播放久久久| 亚洲成人av片在线观看| 国产精品69久久久久| 亚洲欧美国产精品va在线观看| 一区二区三欧美| 亚洲国产欧美一区| 亚洲国产欧美一区| 久久精品国亚洲| 成人精品视频在线| 欧美与黑人午夜性猛交久久久| 国产精品久久久久久久app| 亚洲视频在线播放| 亚洲男女自偷自拍图片另类| 一本色道久久88综合亚洲精品ⅰ| 日韩电影中文字幕一区| 国产一区二区丝袜高跟鞋图片| 亚洲精品久久久一区二区三区| 91精品国产综合久久男男| 97精品一区二区视频在线观看| 亚洲男人天堂古典| 欧美xxxx做受欧美| 68精品国产免费久久久久久婷婷| 国产精品免费观看在线| 97在线免费观看视频| 国产精品日韩电影| 日韩hd视频在线观看| 欧美日韩中文字幕在线视频| xxx成人少妇69| 久久久在线免费观看| 欧美一级大胆视频| 91精品视频在线免费观看| 伊人青青综合网站| 日韩av资源在线播放| www高清在线视频日韩欧美| 欧美激情国产精品| 亚洲aⅴ日韩av电影在线观看| 亚洲aa中文字幕| 欧美麻豆久久久久久中文| 91精品国产自产在线| 国产suv精品一区二区三区88区| 久久久久久免费精品| 国产精品久久久久久久久久久久久| 中文字幕久久精品| 色噜噜久久综合伊人一本| 性欧美视频videos6一9| 中文字幕av一区中文字幕天堂| 欧洲成人免费aa| 欧美亚洲视频一区二区| 国产精品综合久久久| 欧美成人高清视频| 欧美大片免费观看在线观看网站推荐| 精品国产欧美成人夜夜嗨| 日韩亚洲精品视频| 亚洲第一精品福利| 久久精品国产2020观看福利| 亚洲区免费影片| 国产精品美女免费视频| 亚洲精品suv精品一区二区| 亚洲福利视频免费观看| 午夜精品久久久久久久久久久久久| 欧美成人剧情片在线观看| 欧美福利视频在线观看| 亚洲精品久久久久久下一站| 亚洲另类图片色| 日韩av在线直播| 欧美一区二区三区四区在线| 青青草原一区二区| 亚洲一区二区中文| 欧美性猛交xxxx黑人猛交| 国产精品美女av| 日韩亚洲第一页| 久久久久久久亚洲精品| 欧美有码在线观看| 日韩国产高清视频在线| 国产97在线观看| 97国产精品视频人人做人人爱| 久久久久久久国产精品| 国产成人精品最新| 中文字幕欧美精品在线| 亚洲综合成人婷婷小说| 亚洲最大的网站| 亚洲男人天堂2019| 亚洲级视频在线观看免费1级| 久久精品一区中文字幕| 日本不卡高字幕在线2019| 国模精品视频一区二区三区| 日韩最新中文字幕电影免费看| 在线观看国产成人av片| 欧美在线国产精品| 久久国产天堂福利天堂| 亚洲精品v欧美精品v日韩精品| 欧美电影《睫毛膏》| 日韩精品视频在线| 国产精品www| 久久精品国产v日韩v亚洲| 亚洲性av在线| 国产精品久久久亚洲| 国产日本欧美一区二区三区在线| 国产精品毛片a∨一区二区三区|国| 久久999免费视频| 久久五月天综合| 国产精品海角社区在线观看| 成人网欧美在线视频| 高潮白浆女日韩av免费看| 国内精品美女av在线播放| 欧美精品免费在线| 成人免费福利在线| 成人情趣片在线观看免费| 色噜噜国产精品视频一区二区| www.美女亚洲精品| 亚洲人成电影网站色xx| 久久资源免费视频| 国产欧美精品va在线观看| 97久久超碰福利国产精品…| 午夜精品一区二区三区在线播放| 日韩精品在线免费观看| 91国偷自产一区二区三区的观看方式| 亚洲精品国产suv| 欧美日韩免费看| 在线精品国产欧美| 久久精品人人做人人爽| 成人欧美一区二区三区黑人| 国产剧情日韩欧美| 亚洲人成网站免费播放| 国产精品美女免费| 日韩在线观看高清| 亚洲va欧美va在线观看| 日韩小视频在线观看| 日韩欧美一区二区在线| 精品国产视频在线| 91久久精品日日躁夜夜躁国产| 国产精品久久久久久久久久久不卡| 亚洲欧美日韩精品| 国产成人精品视| 久久久精品网站| 亚洲欧洲午夜一线一品| 中文字幕无线精品亚洲乱码一区| 亚洲人精品午夜在线观看| 国产精品美女久久久久av超清| 精品人伦一区二区三区蜜桃免费| 国产精品欧美风情|