php中函式前加&符號的作用分解
php變數前面加&符號是什麼意思就不用多說了,大家都在用,就是兩個變數同時指向一個地址而已,那麼,php函式前面加&符號的意義又是什麼呢?下面先上兩個演示程式碼,然後再做解釋。
function &chhua() { static $b = "" ; //申明一個靜態變數 $b = $b . "WEB開發" ; echo $b ; return $b ; } $a =chhua(); //這條語句會輸出 $b的值 為“WEB開發” $a = "PHP" ; echo " ; $a =chhua(); //這條語 句會輸出 $b的值 為“WEB開發WEB開發” echo " ; $a =&chhua(); //這條語句會輸出 $b的值 為“WEB開發WEB開發WEB開發” echo " ; $a = "JS" ; $a =chhua(); //這條語句會輸出 $b的值 為"JSWEB開發" function &test() { static $b =0; //申明一個靜態變數 $b = $b +1; echo $b ; return $b ; } $a =test(); //這條語句會輸出 $b的值 為1 $a =5; $a =test(); //這 條語句會輸出 $b的值 為2 $a =&test(); //這條語句會輸出 $b的值 為3 $a =5; $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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2471/viewspace-2805130/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP常用符號和函式收藏PHP符號函式
- 匿名函式function前面的! ~等符號作用函式Function符號
- PHP中的header()函式作用PHPHeader函式
- Yaml中特殊符號"| > |+ |-"的作用YAML符號
- php中正規表示式中的特殊符號PHP符號
- Python函式引數前的單星號(*)和雙星號(**)的作用Python函式
- python函式符號sympy的用法Python函式符號
- 加深C# 中字串前加@符號理解以及使用~~C#字串符號
- Linux中的特殊符號含義及作用!Linux符號
- numpy中函式nditer的作用函式
- excel:如何批量加符號Excel符號
- PHP基本符號PHP符號
- php中的extract函式PHP函式
- PHP中的字串函式PHP字串函式
- PHP中基本符號及使用方法PHP符號
- 排名前100的PHP函式及分析PHP函式
- css程式碼中的加號(+)相鄰選擇器的作用CSS
- css選擇器中的加號+的作用簡單介紹CSS
- C++中虛擬函式的作用C++函式
- CSS 選擇器 加號+ 作用CSS
- linux 中正規表示式中?號的作用Linux
- 關於Matlab中符號運算的因式分解、展開與合併Matlab符號
- [PHP字串]②--花括號{}的作用PHP字串
- golang import包前的字母與符號GolangImport符號
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- escape函式處理帶加號字串問題函式字串
- 高併發下,php使用uniqid函式生成唯一識別符號的四種方案PHP函式符號
- PHP中的list()函式入門PHP函式
- PHP常用函式前100排行榜PHP函式
- matlab符號函式的求導與差分的計算Matlab符號函式求導
- HTML 中的特殊符號HTML符號
- CSS中的特殊符號CSS符號
- shell中的特殊符號符號
- 正規表示式最後面的識別符號g的作用是什麼符號
- 啟用函式的作用函式
- 回撥函式的作用函式
- js reverse()函式的作用JS函式
- 神奇的函式作用域函式