本文轉發來自:blog.csdn.net/KH_FC/article/detail...
PHP中變數有普通變數、可變變數和預定義變數,而常量就是普通變數和預定義變數。
1. 變數
在PHP中變數是記憶體中得一個命名單元,在系統中為程式中每個變數都分配一個儲存單元,在這些儲存單元中可以儲存任何資料型別得資料。
在PHP中不需要先宣告變數後使用變數,只需要給變數賦值即可,但是PHP變數名稱必須使用$
字元做為字首,變數名區分大寫小寫。
【示例】為變數賦值
<?php
$num = 3.1415926212;
?>
在進行賦值時只需要使用運算子=
即可,在運算子等號左側為變數名稱右側為變數值。
1.1 變數之間互相賦值
【示例】
<?php
$num1 = 123;
$num2 = $num1;
echo $num2;
?>
輸出結果為:123
,在變數之間進行賦值時,只進行傳遞變數值,變數在儲存單元中都是各自獨立的,也就是說當輸出$num1
變數時也是可以輸出的,不會輸出空
1.2 引用賦值
引用賦值的意思就是將變數A與變數B做一個連結,當變數A值發生改變,變數B的值也隨之進行改變。
【示例】
<?php
$a = 'test';
$b = &$a;
$a = 'test1';
echo $b;
?>
輸出結果為:test1
引用方法也比較簡單,就是在進行賦值變數前面加上&
符號即可。
取消引用
如果不想讓變數引用賦值了,我們可以使用unset()
函式取消變數引用,這個函式是將變數A和變數B之間的引用關係斷開,並不是將變數進行銷燬。
【示例】
<?php
$a = 'test';
$b = &$a;
echo $b; #輸出結果為1
unset($b);
echo $b; #輸出結果為空
?>
2. 可變變數
可變變數也就是一個可以動態變化的變數名,是一種特殊的變數,這個變數名是由應一個變數的值來進行定義的,也就是變數的名字取決於另一個變數的值。
【示例】
<?php
$a = 'test';
$test = 'hello word !';
echo $$a;
?>
輸出結果為:hello word !
定義這樣的變數只需要在變數前面加上$
符號即可
【高階用法】
<?php
$a = 'hello';
$$a = 'word';
echo $a.$$a;
echo '<br>';
echo $hello;
?>
輸出結果為:
helloword
word
3. 預定義變數
在PHP中提供了大量的預定義變數,通過這些變數可以獲取使用者會話、使用者操作環境和本地作業系統等資訊,由於大部分變數依賴於伺服器的版本和設定,以及其他因素,所以一些預定義變數在PHP中以命令列形式執行時並不生效,下面我列舉了一些預定義變數:
預定義變數 | 說明 |
---|---|
$GLOBALS | 呼叫全域性作用域中的全部變數 |
$_SERVER | 顯示伺服器及環境資訊 |
$_GET | 提交GET變數 |
$_POST | 提交POST變數 |
$_FILES | 提交檔案上傳變數 |
$_REQUEST | 提交Request變數 |
$_SESSION | Session變數 |
$_ENV | 環境變數 |
$_COOKIE | Cookies變數 |
$php_errormsg | 前一個錯誤資訊 |
$HTTP_RAW_POST_DATA | 原生POST資料 |
$http_response_header | HTTP響應頭 |
$argc | 傳遞給指令碼的引數數目 |
$argv | 傳遞給指令碼的引數陣列 |
【示例】輸出環境資訊
<?php
var_dump($_SERVER);
?>
輸出結果如圖所示:
這裡因為我的環境有中文字元所以輸出結果時會出現亂碼,後續大家可以定義一下字元編碼就不會存在亂碼了。
4. 常量
4.1 宣告常量
常量其實就是字面意思,也就是說這個變數是一成不變的,除非取消這個定義。
在定義常量時遵循PHP變數的相同命名規則,由英文字母、下劃線和數字組成,但數字不能作為首字母出現。
4.1.1 使用define()
函式宣告常量
【語法】使用define()
宣告常量語法
define($name , $value [ $case_insensitive = true ]);
引數說明:$name
:表示常量名稱$value
:表示常量的值$case_insensitive
:表示設定常量是否區分大小寫,值為true
則不區分大小寫,為false
則區分大小寫
注意:這裡需要注意常量值只能是integer、float、string、boolean、NULL或array
喲
宣告變數只返回布林值,true 為宣告成功,false 為宣告失敗。
【示例】宣告常量
<?php
if (define("test","hello word")){
echo "宣告變數成功";
}else{
echo "宣告變數失敗";
}
?>
輸出結果為:宣告變數成功
【常量與變數對比】
- 常量不需要使用
$
符號進行定義 - 常量只能使用函式進行定義,不能使用賦值符
=
進行賦值 - 常量不需要考慮作用域,可以在任意地方進行定義和使用
- 常量一旦被定義就無法進行修改,只能進行取消定義
- 常量的值只能是標量
4.1.2 const關鍵字
使用過const
關鍵字定義常量只能用在最頂端的作用域,此方法是在編譯時定義的,不能用在函式內、迴圈內或者判斷語句內進行使用。
【示例】
是用<?php const test = "hello word"; ?>
const
關鍵字定義常量是比較簡單的,只需要在定義賦值前加上關鍵字即可4.2 使用常量
獲取變數值也是比較簡單的可以採用變數名的方式獲取或者是使用constant()
函式進行獲取,這兩種方式輸出的值是一樣的,只不過使用函式獲取動態常量時更方便。
【示例】
輸出結果為:兩個<?php define("hello","word"); echo hello; echo constant("hello"); ?>
word
注意:使用函式輸出常量值時,輸出正確可正常輸出,但是輸出錯誤會出現報錯
4.3 預定義常量
PHP中提供了大量的預定義常量,不過大多數預定義常量都是由不同的擴充套件庫進行定義的,只有載入了這些擴充套件庫才能使用這些預定義常量,這裡要注意有些預定義常量會根據不同的位置會有不同的改變,比如_FLNE_
的值就是依賴於他所在的位置來決定。下面總結了一些常用的預定義常量:
預定義常量 | 說明 |
---|---|
PHP_VERSION | 獲取PHP版本 |
PHP_OS | 獲取作業系統資訊 |
PHP_API | 獲取WEB與PHP的介面資訊 |
PHP_INT_MAX | 獲取最大整數 |
PHP_BINDIR | 獲取執行路徑 |
_FILE_ | 獲取當前檔名 |
_LINE_ | 獲取當前行數 |
DEFAULT_INCLUDE_PATH | 獲取PHP預設路徑 |
PEAR_INSTALL_DIR | 獲取PHP安裝路徑 |
PEAR_EXTENSION_DIR | 獲取PHP擴充套件路徑 |
PHP_LIBDIR | 獲取PHP模組擴充套件路徑 |
_DIR_ | 獲取當前檔案路徑 |
_FUNCTION_ | 獲取函式名 |
M_PI | 獲取圓周率 |
_MHTHOD_ | 獲取當前成員 |
_NAMESPALE_ | 獲取名稱空間 |
_CLASS_ | 獲取類名 |
本作品採用《CC 協議》,轉載必須註明作者和本文連結