php函數前面加&符號 和 變量前面加&符號的意義


php函數前面加&符號 和 變量前面加&符號的意義

php函數前面加&符號的意思是函數的引用返回,php函數前面加&符號有什么作用呢 

 

Php代碼   收藏代碼
  1. function &test()  
  2. {  
  3. static $b=0;//申明一個靜態變量  
  4. $b=$b+1;  
  5. echo $b;  
  6. return $b;  
  7. }  
  8.   
  9. $a=test();//這條語句會輸出 $b的值 為1  
  10. $a=5;  
  11. $a=test();//這條語句會輸出 $b的值 為2  
  12. $a=&test();//這條語句會輸出 $b的值 為3  
  13. $a=5;  
  14. $a=test();//這條語句會輸出 $b的值 為6  
 

下面解釋下: 
通過這種方式$a=test();得到的其實不是函數的引用返回,這跟普通的函數調用沒有區別.


至於原因: 這是PHP的規定
php規定通過$a=&test(); 方式得到的才是函數的引用返回.


至於什么是引用返回呢(PHP手冊上說:引用返回用在當想用函數找到引用應該被綁定在哪一個變量上面時。)

 

用上面的例子來解釋就是
$a=test()方式調用函數,只是將函數的值賦給$a而已, 而$a做任何改變 都不會影響到函數中的$b.
而通過$a=&test()方式調用函數呢, 他的作用是將return $b中的 $b變量的內存地址與$a變量的內存地址,
指向了同一個地方. 即產生了相當於這樣的效果($a=&b;) 所以改變$a的值,也同時改變了$b 的值 ,所以在執行了:
$a=&test();  $a=5; 以后,$b的值變為了5 ......

 

php函數前面加&符號是什么意思?有的函數前面會加&,因為很少見到,所以不明白php函數前面加&符號是什么意思

那么,php函數前面加&符號有什么作用呢

 

Java代碼   收藏代碼
  1. function &test()  
  2. {  
  3. static $b=0;//申明一個靜態變量  
  4. $b=$b+1;  
  5. echo $b;  
  6. return $b;  
  7. }  
  8.   
  9. $a=&test();//這條語句會輸出 $b的值 為1  
  10. $a=6;  
  11. test();//這條語句會輸出$b的值 為7  
 

 

php變量前面加&符號是什么意思

 

 

先看一個示例

 

 
Php代碼   收藏代碼
  1. $foo = 321;  
  2. $bar = &$foo;   
  3. $bar = 123;  
  4. print $foo;  

那么輸出的結果將會是什么呢

 

Php代碼   收藏代碼
  1. 123    
 

為什么會這樣呢?

改動新的變量將影響到原始變量,這種賦值操作更加快速

 

注意:只有命名變量才可以傳地址賦值

就是說,改變了$bar的值,也就改變了$foo的值了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM