天天看點

自學PHP筆記(四) PHP變量和常量

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);
?>
      

輸出結果如圖所示:

自學PHP筆記(四) PHP變量和常量

這裡因為我的環境有中文字元是以輸出結果時會出現亂碼,後續大家可以定義一下字元編碼就不會存在亂碼了。

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 "聲明變量失敗";
  }
?>
      

​聲明變量成功​

【常量與變量對比】

  1. 常量不需要使用​

    ​$​

    ​符号進行定義
  2. 常量隻能使用函數進行定義,不能使用指派符​

    ​=​

    ​進行指派
  3. 常量不需要考慮作用域,可以在任意地方進行定義和使用
  4. 常量一旦被定義就無法進行修改,隻能進行取消定義
  5. 常量的值隻能是标量
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_ 擷取命名空間