<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>變量</title>
</head>
<body>
<!-- 變量 用于存儲數(shù)據(jù)的容器 -->
<!-- PHP 變量規(guī)則:
變量以 $ 符號開始,后面跟著變量的名稱
變量名必須以字母或者下劃線字符開始
變量名只能包含字母數(shù)字字符以及下劃線(A-z、0-9 和 _ )
變量名不能包含空格
變量名是區(qū)分大小寫的($y 和 $Y 是兩個不同的變量)
tip:PHP 語句和 PHP 變量都是區(qū)分大小寫的。
當賦一個文本值給變量時,在文本值上加引號
php沒有聲明變量的命令,變量在第一次賦值時被創(chuàng)建
-->
<?php
echo "變量<br>";
$a=1;
$b=2;
$z=$a+$b;
echo '$z='.$z; // $z=3
?>
<!-- 變量作用域 -->
<!-- local
global 用于函數(shù)內(nèi)訪問全局變量
static 當一個函數(shù)完成時,它的所有變量通常都會被刪除。希望某個局部變量不要被刪除。在第一次聲明變量時使用 static 關(guān)鍵字
parameter
-->
<!-- 在所有函數(shù)外部定義的變量,擁有全局作用域,
除了函數(shù)外,全局變量可以被腳本中的任何部分訪問,
要在一個函數(shù)中訪問一個全局變量,需要使用global關(guān)鍵字
在php函數(shù)內(nèi)部聲明的變量是局部變量,僅能在函數(shù)內(nèi)部訪問
-->
<?php
$x=5; // 全局變量
function myTest(){
$y=10; // 局部變量
echo "<p>測試函數(shù)內(nèi)變量:<p>";
// echo "變量 x 為: $x"; // 報錯
echo "<br>";
echo "變量 y 為: $y";
}
myTest();
echo "<p>測試函數(shù)外變量:<p>";
echo "變量 x 為: $x";
echo "<br>";
// echo "變量 y 為: $y"; //報錯
?>
<!-- global 用于函數(shù)內(nèi)訪問全局變量 -->
<?php
$x1=5;
$y1=10;
function myTest1(){
global $x1,$y1;
$y1=$x1+$y1;
};
myTest1();
echo $y1; // 輸出 15
?>
<!-- PHP 將所有全局變量存儲在一個名為 $GLOBALS[index] 的數(shù)組中。 index 保存變量的名稱。這個數(shù)組可以在函數(shù)內(nèi)部訪問,也可以直接用來更新全局變量。 -->
<?php
$x2=5;
$y2=10;
function myTest2(){
$GLOBALS['y2']=$GLOBALS['x2']+$GLOBALS['y2'];
};
myTest2();
echo $y2."<br>"; // 輸出 15
?>
<!-- static 當一個函數(shù)完成時,它的所有變量通常都會被刪除。希望某個局部變量不要被刪除。在第一次聲明變量時使用 static 關(guān)鍵字
然后,每次調(diào)用該函數(shù)時,該變量將會保留著函數(shù)前一次被調(diào)用時的值。
注釋:該變量仍然是函數(shù)的局部變量。
-->
<?php
function myTest3(){
static $x=0;
// $x=0;
echo $x." ";
$x++;
}
myTest3();
myTest3();
myTest3();
?>
<!-- 參數(shù)作用域 -->
<!-- 參數(shù)是通過調(diào)用代碼將值傳遞給函數(shù)的局部變量。參數(shù)是在參數(shù)列表中聲明的,作為函數(shù)聲明的一部分: -->
<?php
echo "<br>";
function myTest4($x){
echo $x;
}
myTest4(5);
?>
<!-- 在 php 中函數(shù)是有獨立的作用域,所以局部變量會覆蓋全局變量,即使局部變量中并定義沒有全局變量相同的變量,也會被覆蓋 -->
<?php
$c=5;
$d=3;
function t(){
echo $c-$d; // 報錯 輸出 0
}
t();
echo "<br>";
echo $c; //輸出 5
echo "<br>";
?>
<?php
$e=5;
$f=3;
function t1(){
global $e,$f;
echo $e-$f; // 輸出 2
}
t1();
echo PHP_EOL;
function t2(){
echo $GLOBALS['e']-$GLOBALS['f']; // 輸出 2
}
t2();
?>
<!-- PHP_EOL 換行符 -->
<?php
echo "3";
echo PHP_EOL;
echo "4";
//windows平臺相當于 echo "\r\n";
//unix\linux平臺相當于 echo "\n";
//mac平臺相當于 echo "\r";
?>
</body>
</html>