php未定義的變數name PHP常量

2021-10-17 23:21:58 字數 3458 閱讀 3869

一 什麼是常量

常量是乙個簡單值的識別符號,該值在指令碼中不能改變。

乙個常量由英文本母、下劃線、和數字組成,但數字不能作為首字母出現。 (常量名不需要加 $ 修飾符),常量在整個指令碼中都可以直接使用。

使用常量時,不能在常量名前新增$符號,不然會將常量轉換成新的未定義變數使用,會導致報錯

php中(php 4及以後)我們可以使用函式define()來定義常量

define ( string $name , mixed $value [, bool $case_insensitive = false ] )

注意:該函式有三個引數

name:必選引數,常量名稱,即標誌符

value:必選引數,常量的值

case_insensitive :可選引數,如果設定為 true,該常量則大小寫不敏感,預設是大小寫敏感的

下面我們來舉個栗子:

<?php 

define('name',"php是世界上最好的語言"); //定義乙個名為pi的常量,區分大小寫

echo name; //輸出:php是世界上最好的語言

?>

如果**寫成 define('name',"php是世界上最好的語言",true)則表示不區分大小寫

php 5.3.0之後,除了使用函式define()之外,我們還可以使用php關鍵字const來定義常量

<?php //以下**需在php 5.3.0及之後的版本中執行 

const pi = 3.14159; //使用const關鍵字定義乙個名為pi的常量

echo pi; //輸出:3.14159

?>

define()是函式const是語言結構所以在執行時const要快得多

雖然上述兩種方式均可以定義常量,但是它們之間有什麼不同之處呢。下面我們來一一講解php中define()函式和const關鍵字定義常量的區別

一 版本差異

兩種定義常量的方式之間存在版本差異,函式define()在php4和php5中均可使用,關鍵字const只能在php 5.3.0及其後的版本中使用。

二 定義位置的區別

由於函式define()定義的常量是在執行define()函式時定義的,因此可以在函式內、迴圈內、if語句內等函式能夠被呼叫的任何地方使用define()函式定義常量

與define()不同的是,由於const關鍵字定義的常量是在編譯時定義的,因此const關鍵字定義常量必須處於最頂端的作用區域。這也就意味著不能在函式內、迴圈內以及if語句之內用const來定義常量。

<?php 

//使用const關鍵字定義常量必須處於最頂端的作用區域

//也就是可以在編譯時直接解析定義的地方

const demo = 'demo';

class person

inte***ce usb

?>

三 對值的表示式支援的差異雖然關鍵字const和define()定義的常量值都只能為null或標量資料(boolean,integer,float和string型別)以及resource型別(不推薦定義resource型別的常量,否則可能出現無法預知的結果)。不過,由於關鍵字const定義常量是在編譯時定義的,因此const關鍵字定義的常量值的表示式中不支援算術運算子、位運算子、比較運算子等多種運算子,而這些運算子在define()函式定義常量時都是可以直接使用的

<?php 

define('define_var1', 1 << 1);

//const const_var1 = (1 << 1); //const不支援位運算子,php會報語法錯誤

define('define_var2', 1 + 1);

//const const_var2 = 1 + 1 ; //const不支援算術運算子,php會報語法錯誤

define('define_var3', 1 == 1);

//const const_var3 = 1 == 1 ; //const不支援比較運算子,php會報語法錯誤

$value = 3;

define('define_var4', $value);

//const const_var4 = $value ; //const不支援變數形式的值,php會報語法錯誤

define('define_var5', true || false);

//const const_var5 = true || false ; //const不支援邏輯運算子,php會報語法錯誤

define('define_var6', 'hello'.' world!');

//const const_var6 = 'hello'.' world!' ; //const不支援字串運算子,php會報語法錯誤

class user{}

$user = new user();define('define_var7', $user instanceof user);

//const const_var7 = $user instanceof user ; //const不支援型別運算子,php會報語法錯誤

?>

四 對字元大小寫敏感的支援差異函式define()可以接收第3個引數,如果該引數為true,則表示常量名的大小寫不敏感。而使用const關鍵字定義常量卻沒有提供類似的功能,預設大小寫敏感

<?php 

// 設定編碼為utf-8,以避免中文亂碼

header('content-type:text/html;charset=utf-8');

// define()的第3個引數為true時,表示大小寫不敏感

define('site_name', 'php是世界上最好的語言', true);

echo site_name; // 輸出:php是世界上最好的語言

echo site_name; // 輸出:php是世界上最好的語言

echo site_name; // 輸出:php是世界上最好的語言

const domain_name = 'php是世界上最好的語言';

echo domain_name; // 輸出:php是世界上最好的語言

echo domain_name; // php提示常量未定義

echo domain_name; // php提示常量未定義

?>

未定義的索引 php中 php的未定義索引如何解決

通常出現未定義的索引問題是由於陣列沒有這個值造成的,陣列分為關聯陣列和索引陣列,索引陣列是數字下標 關聯陣列是鍵值下標。解決辦法 判斷陣列中是否包含下標鍵值為id的值,如果沒有,則返回錯誤資訊,如何判斷呢,最簡單的方法就是用函式isset來判斷,如isset post id 存在則返回true,反之...

php中未定義的變數使用技巧

在檔案中直接使用 var dump a 該變數沒有定義過,那麼得到的結果是null。為空,不是任何資料型別 怎麼判斷它的值呢?加深自己的理解,下面使用是正常的 a 0 true a null true 不要嘗試這樣使用 if a 0 初學php的時候就從php聖經一書中了解到,變數沒有定義,就直接使...

js判斷變數是否未定義

一般如果變數通過var宣告,但是並未初始化的時候,變數的值為undefined,而未定義的變數則需要通過 typeof 變數 的形式來判斷,否則會發生錯誤。例如 if myvar01 alert 發生錯誤 該 直接發生異常,因為變數myvar01沒有申明 if undefined typeof my...