- PHP編程基礎與實踐教程
- 干練 毛紅霞
- 1508字
- 2019-11-29 15:51:36
2.6 變量
變量與常量正好相反,它存放的是可變的數據,即在程序執行過程中變量的值可以發生變化。
2.6.1 聲明和使用變量
在聲明變量時,系統會為程序中的每一個變量分配一個存儲單元。這些變量都使用“變量名”來標識,即變量名實質上就是計算機內存單元的名稱,因此通過變量名即可訪問內存中的數據。
在PHP中,使用變量之前并不需要進行聲明,即只需要為變量賦值,而PHP的變量名用“$”和標識符表示,并且區分大小寫。
注意:變量名的標識符不能以數字字符開頭,也不能以字母和下劃線以外的其他字符開頭。
變量賦值就是給變量一個具體的數據值,通常通過賦值運算符實現。在PHP中,為變量賦值的方法有三種。
(1)直接賦值:直接將數據值賦值給變量。
(2)變量間賦值:將一個變量的數據值賦值給另一個變量。
(3)引用賦值:使用符號“&”將一個變量的內存地址傳給另一個變量,即再為該內存中的數據起一個“別名”。當改變其中一個變量的值時,另一個變量也會隨之發生變化。
說明:變量間賦值和引用賦值之間的區別在于,變量間賦值是開辟一個新的內存空間,并復制原變量內容;引用賦值是給原變量內容另起一個變量名,二者使用的是同一內存空間。
【實例2-24(26_Variable.php)】 定義一個值為str1的變量$str1,然后將該變量的值賦值給另一個變量$str2,再將該變量引用給另一個變量$str3,最后輸出結果。實例代碼如下。
<?php //設置編碼格式,正確顯示中文 header("content-Type: text/html; charset=gb2312"); $str1 = 'str1'; //直接賦值 echo '$str1的值:'.$str1.'<br/>'; //顯示結果 $str2 = $str1; //變量間賦值 echo '$str2的值:'.$str2.'<br/>'; //顯示結果 $str3 = & $str1; //引用賦值 echo '$str3的值:'.$str3.'<br/>'; //顯示結果 $str1 = 'str2'; //修改變量的值 echo '$str1的值:'.$str1.'<br/>'; //顯示結果 echo '$str2的值:'.$str2.'<br/>'; //顯示結果 echo '$str3的值:'.$str3; //顯示結果 ?>
運行結果如圖2-24所示。

圖2-24 變量的賦值
2.6.2 變量的作用域
變量的作用域是指能夠使用變量的有效范圍。變量必須在其有效范圍內使用,否則就會失去其意義。在PHP中,變量的作用域有三種。

【局部變量和全局變量】
(1)局部變量:變量定義在函數內部,其作用域為所在函數。
注意:局部變量在函數調用結束以后,其存儲的數據會被立即清除,內存空間也會被釋放。
(2)全局變量:變量定義在所有函數以外,其作用域為整個PHP文件。
注意:如果需要在自定義函數內部使用全局變量,那么要使用關鍵字global在調用全局變量時進行聲明。
(3)靜態變量:能夠在函數調用結束之后保留變量值,當再次回到其作用域時,可以繼續使用保留的變量值。

【靜態變量】
注意:靜態變量需要使用關鍵字static進行聲明。
【實例2-25(27_Scope.php)】 在函數內外定義并輸出變量名相同的局部變量“局部變量:調用函數時輸出。”和全局變量“全局變量:在函數以外輸出。”。實例代碼如下。
<?php //設置編碼格式,正確顯示中文 header("content-Type: text/html; charset=gb2312"); //定義一個全局變量 $str = '全局變量:在函數以外輸出。'; //定義一個自定義函數 function example() { //定義一個局部變量 $str = '局部變量:調用函數時輸出。'; echo $str.'<br/>'; //顯示結果 } example(); //調用函數 echo $str; //顯示結果 ?>
運行結果如圖2-25所示。

圖2-25 變量的作用域
【實例2-26(28_Global_Variable.php)】 在自定義函數內使用并輸出值為“全局變量”的全局變量。實例代碼如下。
<?php //設置編碼格式,正確顯示中文 header("content-Type: text/html; charset=gb2312"); $str = '全局變量'; //定義一個全局變量 //定義一個自定義函數 function example() { echo '直接使用全局變量:'.$str.'<br/>'; //顯示結果 global $str; //使用關鍵字global調用全局變量 echo '通過global使用全局變量:'.$str; //顯示結果 } example(); //調用函數 ?>
運行結果如圖2-26所示。

圖2-26 全局變量
【實例2-27(29_Static_Variable.php)】 分別使用普通變量和靜態變量在自定義函數中輸出遞增數字。實例代碼如下。
<?php //設置編碼格式,正確顯示中文 header("content-Type: text/html; charset=gb2312"); //定義一個自定義函數 function example1() { $num = 0; //定義一個普通變量 $num++; //遞增 echo $num.' '; //顯示結果 } //定義一個自定義函數 function example2() { static $num = 0; //定義一個靜態變量 $num++; //遞增 echo $num.' '; //顯示結果 } echo'普通變量輸出:'; //顯示結果 //循環10次 for ($i = 0; $i < 10; $i++) { example1(); //調用函數 } echo'<br/>靜態變量輸出:'; //顯示結果 //循環10次 for ($i = 0; $i < 10; $i++) { example2(); //調用函數 } ?>
運行結果如圖2-27所示。

圖2-27 靜態變量
2.6.3 可變變量
可變變量是一種非常特殊的變量。它允許動態地改變一個變量的名稱,即可變變量的名稱由另一個變量的值來確定。

【可變變量】
在PHP中,在變量的前面再加上符號“$”即可實現可變變量。
【實例2-28(30_Variable_Variable.php)】 定義并輸出一個值為“可變變量”的可變變量。實例代碼如下。
<?php //設置編碼格式,正確顯示中文 header("content-Type: text/html; charset=gb2312"); $str1 = 'str2'; //定義一個字符串型變量 $str2 ='可變變量'; //定義一個字符串型變量 echo '$str1的值:'.$str1.'<br/>'; //顯示結果 echo '$str2的值:'.$$str1.'<br/>'; //顯示結果 ?>
運行結果如圖2-28所示。

圖2-28 可變變量
說明:$$str1為可變變量,在執行時,首先將$str1解析為值str2,然后解析$str2,最后將值輸出。
2.6.4 預定義變量
在PHP中,除了可以使用自定義變量外,還可以使用預定義變量來獲取用戶會話、用戶操作系統環境和本地操作系統環境等信息。常用的預定義變量見表2-3。
表2-3 常用的預定義變量


- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- 從零開始構建企業級RAG系統
- TypeScript Essentials
- 復雜軟件設計之道:領域驅動設計全面解析與實戰
- Web交互界面設計與制作(微課版)
- Learning RabbitMQ
- Access 2010數據庫基礎與應用項目式教程(第3版)
- Reactive Android Programming
- Learning Laravel's Eloquent
- C語言程序設計習題與實驗指導
- Building Web and Mobile ArcGIS Server Applications with JavaScript(Second Edition)
- SQL Server 2014數據庫設計與開發教程(微課版)
- FORTRAN程序設計權威指南
- React.js 16從入門到實戰
- 從Excel到Python:用Python輕松處理Excel數據