const和define的使用區別

2022-07-24 02:24:14 字數 1379 閱讀 2140

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

<?php

define('pi',3.14159);  //定義乙個名為pi的常量

echo pi;    //輸出:3.14159

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

<?php

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

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

echo pi;    //輸出:3.14159

區別:

由於函式define()定義的常量是在執行define()函式時定義的,因此可以在函式內、迴圈內、if語

句內等函式能夠被呼叫的任何地方使用define()函式定義常量。與define()不同的是,由於const

關鍵字定義的常量是在編譯時定義的,因此const關鍵字定義常量必須處於最頂端的作用區域。這

也就意味著不能在函式內、迴圈內以及if語句之內用const來定義常量。

<?php

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

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

const demo ='demo';

classperson$user =newuser();define('define_var7', $user instanceofuser);

//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','codeplayer',true);

echo site_name;//輸出:codeplayer

echo site_name;//輸出:codeplayer

echo site_name;//輸出:codeplayer

const domain_name ='365mini.com';

echo domain_name;   //輸出:365mini.com

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

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

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...

const和 define的區別

1 const定義的常量是有型別的,define定義的常量是沒有型別的 這就意味著會對前者做乙個型別的檢查,對 define則是做乙個簡單的替換 2 const定義的常量在編譯的時候分配記憶體,而 define定義的常量在預編譯的時候進行替換,不分配記憶體 3 作用域不同,const定義的常變數的作...

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...