什麼是局部變數?php變數的範圍之局部變數執行個體詳解

來源:互聯網
上載者:User
php變數的範圍

變數的範圍也就是它的生效範圍。大部分的 PHP 變數只有一個單獨的使用範圍,也包含了 include 和 require 引入的檔案。當一個變數執行賦值動作以後,會隨著聲明的地區位置差異而有不同的使用範圍。上一章節介紹了php變數函數及函數引用和取值 (Dereference),一般情況下,變數會依據聲明的位置分為局部變數和全域變數兩種。這一章節我們就先介紹局部變數。

什麼局部變數?

局部變數也叫內部變數,是在函數內部聲明的變數,其範圍僅限於函數內部,離開該函數後再使用這個變數就是非法的,程式執行時會出現錯誤的資訊。不僅在函數中聲明的變數是局部變數,為聲明函數而設定的參數因為只能在本函數的內部使用,所以也是局部的變數。區別在於函數的參數具體數值從函數外部獲得(函數被調用時傳入值),而直接在函數中聲明變數只能在函數內部被賦值。但他們的範圍都僅限於函數的內部,因為當每次函數被調用時,函數內部的變數才會被聲明,執行完畢後函數內部的變數都會被釋放。

下面通過一段代碼執行個體來示範一下:

<?php  /*  * 測試局部變數的示範函數  * $one 需要一個整型的參數,測試是否為局部變數  */  function num($one){    // 在函數內部聲明變數    $two = 2;    // 在函數內部使用兩個全域變數    echo "函數內部:$one + $two = ".($one+$two).'<br>' ;  }  // 調用 num 函數並賦值給參數  num(6);  // 在函數外部使用兩個變數,為非法訪問  echo "函數外部:$one + $two = ".($one+$two);?>

以上的程式執行後會輸出以下的結果:

函數內部:6 + 2 = 8          //在函數內部可以訪問內部變數,輸出結果函數外部: + = 0            // 在函數外部不能訪問函數內部的兩個變數,所以無法輸出結果

上面的執行個體中聲明了一個 num() 函數,當調用 num() 函數時才會聲明兩個變數 $one 和 $twe,這兩個變數都是局部變數。變數 $one 是在參數中聲明的並在調用時被賦值,另一個變數 $two 是在函數中聲明的並且直接賦值, 這兩個局部變數只能在函數的內部使用,並輸出計算的結果。當 num()函數執行結束時,這兩個變數就會被釋放。因此在函數外部存取這兩盒變數時是不存在的,所以沒有輸出結果。如果在函數外部需要調用該變數值,必須通過 return 指令將其值傳回至主程式區塊以作後續處理。

其代碼如下所示:

<?php  /*  * 測試局部變數的示範函數  * $one 需要一個整型的參數,測試是否為局部變數  */  function num($one){    // 在函數內部聲明變數    $two = 2;    // 將函數的運算結果使用 return 語句返回到函數調用處    return $one + $two;  }  // 調用 num 函數並賦值給參數 $one,傳回值付給變數 $sum  $sum = num(6);  // 在函數外部可以使用函數返回的結果  echo "函數外部使用:$sum";?>

以上的程式執行後會輸出以下的結果:

函數外部使用:8                 //獲得函數內部執行結果,在函數外部使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.