首頁  >  文章  >  後端開發  >  php函數中局部變數和全域變數的區別

php函數中局部變數和全域變數的區別

伊谢尔伦
伊谢尔伦原創
2017-05-09 10:44:163606瀏覽

在程式內定義的變數稱為#​​##局部變數,只在程式內部使用,隨程式結束而消失。定義在程式外部的變數就叫全域變數,可以被程式呼叫,但不會隨程式結束而消失。前面的章節分別介紹了php函數的自訂函數的局部變數自訂函數的全域變數。定義一個函數 這個函數裡的變數都是局部變數 它們只能在這個函數內部使用 return是這個函數的回傳值 呼叫這個函數就會輸出這個值 這個值可以是函數內的變數 也就是局部變數。而全域變數是在函數外部定義的變量,它的作用域從定義處一直到檔案結尾。

在php中函數被視為單獨的程式片,所以局部變數會覆寫全域變量,即使局部變數中並定義沒有全域變數相同的變量,也會被覆寫。

下面透過一個實例來說明它們的差異:

<?php
//局部变量测试
$s1= "out s1"; //全局变量
function say(){
 $s1 = "in s1"; //局部变量
 echo "say():$s1";
}
say(); //输出局部变量: in s1
echo "<br/>";
echo "function out:$s1"; ////输出全局变量:out s1
//static变量测试
function count1(){
 $num = 0;
 $num++;
 echo $num." ";
}
function count2(){
 static $num = 0;
 $num++;
 echo $num." ";
}
for($i=0; $i<10; $i++){
 count1(); //11 1 1 1 1 1 1 1 1 1
}
echo "<br/>";
for($i=0; $i<10; $i++){
 count2(); //1 2 3 4 5 6 7 8 9 10
}
echo "<br/>";
//全局变量在函数中运用,加global
$a="php";
$b = "java";
function show(){
 echo $a; // 无输出
 global $b;
 echo $b; //定义global,输出java
}
show();
?>

局部變數和全域變數的差異說明:

1. 局部變數在函數內部可以存取內部變量,輸出結果;在函數外部無法存取函數內部的變量,所以無法輸出結果;如果在函數外部需要呼叫該變數值,則必須透過return 指令將其值傳回至主程式區塊以作後續處理。

2. 在PHP中,由於函數可以視為單獨的程式碼片段,所以局部變數會覆蓋全域變數的能見度,因此在函數中無法直接呼叫全域變數。在函數中若要使用全域變量,就必須利用關鍵字定義目標變量,而這個全域變數的關鍵字為「 global 」, 使用關鍵字「global」你就可以把全域資料匯入到一個函數的局部範圍內,以告訴函數主體此變數為全域變數。

3. PHP中的變數作用範圍的另一個重要特性就是靜態變數(static 變數)。靜態變數僅在局部函數域中存在且只初始化一次,當程式執行離開此作用域時,其值不會消失,會使用上次執行的結果。上面的例子分別使用 static 和不用 static 變數的,朋友可以仔細比較一下。

【相關教學推薦】

1. 《

php.cn獨孤九賤(4)-php影片教學

2.  

php程式設計從入門到精通全套影片教學

3. 

php實戰影片教學#

以上是php函數中局部變數和全域變數的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn