1. 程式人生 > >php基礎--變數及作用域

php基礎--變數及作用域

php變數定義規則

  • 變數必須以$符號開頭,後面接變數名
  • 變數名必須以字母或者下劃線開頭
  • 變數名只能包含字母數字和下劃線(A-z,0-9和_)
  • 變數名不能包含空格
  • 變數名區分大小寫

建立變數

在php中,不必事先宣告變數,在給變數賦值的時候被建立

<?php 
$txt = 'Hello,world';  //在給文字賦值的時候要加上引號
$x = 5;
$number = 5.5;
?>

通過上面的變數賦值可以看出,沒有對變數宣告資料型別,這是因為php是一門弱型別的語言,php會自動把變數轉換為正確的資料型別

php變數作用域

變數的作用域是指令碼中變數可被引用/使用的範圍,共有四種

  • local
  • global
  • static
  • paramter

全域性作用域和區域性作用域

在所有函式外部定義的變數,擁有全域性作用域global;在函式內部定義的變數用於區域性作用域local。全域性變數可以被指令碼的任何位置訪問,但在函式內部訪問全域性變數要使用global關鍵字。而區域性變數只能在函式內部進行訪問。

<?php 
$x = 2;
function test(){
    $y = 3;
    echo $x;
    echo "<br>";
    echo $y;
    echo "<br>";
}
test();
echo
$x; echo "<br>"; echo $y;

上面的程式碼中,當呼叫test()函式時,會輸出兩個變數的值,函式會輸出區域性變數$y的值,但是不能輸出全域性變數$x的值。
而在函式外輸出的兩個變數的值中,會輸出變數$x 的值,但是不能輸出$y的值,因為$y 是區域性變數,不能在函式外部訪問。

函式內部訪問全域性變數

在函式內部訪問全域性變數,要使用global關鍵字

<?php 
$x = 1;
function test(){
    global $x;
    $y = 2;
    echo $x+$y;
}
test();  //輸出3
?>

static作用域

當一個函式呼叫完後,它的所有變數都會被刪除,如果想要某個區域性變數不被刪除,那麼可以使用static關鍵字

<?php 
function test(){
    $x = 0;
    echo $x;
    $x++;

}
test(); //輸出0
test(); //輸出0
test(); //輸出0
?>
<?php 
function test(){
    static $x = 0;
    echo $x;
    $x++;

}
test(); //輸出0
test(); //輸出1
test(); //輸出2
?>

parameter 引數作用域

引數是通過呼叫程式碼將值傳遞給函式的區域性變數,引數是在引數列表中宣告的,作為函式宣告的一部分。

<?php 
function test($x){
    echo $x;
}
test(1);   //輸出1
test(2);   //輸出2
?>