php變數函數及函數引用和取值 (Dereference)執行個體詳解

來源:互聯網
上載者:User
變數函數

在 php 中是支援變數函數的,首先定義一些函數,再聲明一個變數,使用變數來調用不同的函數,然後不斷地重新給變數賦值。下面我們將通過一個執行個體來介紹變數函數的具體使用方法。在這個例子中首先定義3個函數,接著聲明一個變數並賦值,通過變數函數來訪問不同的3個函數,需要重新不斷地給變數賦值。

其樣本的代碼如下所示:

<?php function come(){   echo "進門了<br>"; } function go($name="tom"){   echo "$name 出門了<br>"; } function back($str){   echo "重新進門 $str<br>"; } $func = "come";        //聲明一個變數並賦值 $func();               //使用變數函數來調用函數come() $func = "go";          //重新給變數賦值 $func("jane");         //使用變數函數來調用函數go() $func = "back";        //重新給變數賦值 $func("jack");         //使用變數函數來調用函數back()?>

運行結果如下所示:

說明:可以看到,變數函數的調用時通過改變變數名來實現的,通過在變數名後面加上一對小括弧,php將自動尋找與變數名相同的函數,並執行它。如果找不到對應的函數,系統將會報錯。這項技術可以用於實現回呼函數和函數表等等。


函數的引用

函數間參數的傳遞中的按引用傳遞的方式可以修改實參的內容。引用不僅可以用於普通變數、函數的參數,可也以用於函數本身。對函數的引用,就是對函數返回結果的引用。

下面我們將通過一個執行個體來說明,實現定義一個函數,這裡需要在函數名前加上 “ & ” 符,接著,變數$str 將引用該函數,最後輸出該變數$str, 實際上就是 $tmp的值。

執行個體代碼如下所示:

<?php function &test($tmp=0){        //定義一個函數,加 & 符號   return $tmp;                 //返回參數 $tmp } $str = &test("hello word");    //聲明一個函數的引用$str echo $str;                     //輸出$str?>

輸出結果為 : hello word

注意:和參數傳遞不同,對函數的引用必須在兩個地方都使用 “ & ” 符,用來說明返回的是一個引用。

取值 (Dereference)

當在實際操作中不需要引用時,可以取消參數的引用傳遞方式的引用,只需要使用PHP函數即可,這裡取值 (Dereference)使用 unset() 函數,它只是斷開了變數名和變數內容之間的綁定,而不是銷毀變數內容。

下面通過一個執行個體來說明,首先聲明一個變數和一個變數引用,輸出引用後取值 (Dereference),再次調用引用和原變數。可以看到,取值 (Dereference)後對原變數沒有任何影響。

執行個體代碼如下所示:

<?php $num = 123; $math = &$num; echo "\$math is: ".$math . "<br>"; unset($math); echo "\$math is: ".$math . "<br>"; echo "\$num is: " .$num;?>

運行結果為:

$math is: 123$math is: $num is: 123

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.