PHP 常量與變量

寫在前面

常量用于存儲不經(jīng)常改變的數(shù)據(jù)信息的量裸卫,常量的值被定義后哗蜈,在程序整個執(zhí)行期間协怒,這個值都有效涝焙,并且不可再次賦值。
變量用于存數(shù)數(shù)據(jù)臨時數(shù)據(jù)信息孕暇,是編寫程序中尤為重要的一部分仑撞,在定義變量的時候赤兴,通常要為其賦值,所以定義變量同事隧哮,系統(tǒng)會自動為該變量分配一個存儲空間來存儲變量的值桶良。

個人項目

個人站點:<a >LN電影網(wǎng)</a>
個人博客:<a >L&N博客</a>

常量

1.聲明和使用常量

1) 使用 define() 函數(shù)聲明常量
// 語法 
define(string constant_name,mixed value,case_sensitive = true)
// 定義 常量:welcome 值:'hello world'
define('welcome','hello world');

說明:
constant_name: 必須參數(shù),常量名稱即標(biāo)識符
value: 必選參數(shù)沮翔,常量的值
case_sensitive: 可選參數(shù)陨帆,指定是否大小寫敏感,默認(rèn) true 不敏感

2) 使用 constant() 函數(shù)獲取常量的值

獲取指定產(chǎn)量的值和直接使用常量名輸出的效果是一樣采蚀,但是函數(shù)可以動態(tài)輸出不同的常量歧譬,在使用上更加靈活

// 語法:mixed constant(string const_name)
echo constant('welcome');

說明:參數(shù) const_name 為要獲取常量的名稱。如果成功則返回常量值搏存;失敗則提示錯誤信息”常量沒有被定義“

3)使用 defined() 函數(shù)判斷常量是否被定義
// 語法:bool defined(string constant_name)
var_dump(defined('welcome'));

// 說明:參數(shù) constant_name 為要獲取常量的名稱瑰步,成功返回 true 否則返回 false

2.預(yù)定義常量

在 PHP 中提供了很多預(yù)定義常量,可以獲取 PHP 中的信息璧眠,但不能任意修改這些常量的值缩焦。預(yù)定義常量的名稱及作用如下:

常量名 功能
__FILE__ 默認(rèn)常量,PHP 成熟文件名
__LINE__ 默認(rèn)常量责静,PHP 程序行數(shù)
PHP_VERSION 內(nèi)建常量袁滥,PHP 程序版本,如:5.5
PHP_OS 內(nèi)建常量灾螃,執(zhí)行 PHP 解析器的操作系統(tǒng)名稱题翻,如:Linux 、Windows
TRUE 這個常量是一個真值:true
FALSE 這個常量是一個假值: false
BOLL 這個常量是一個控制:null
E_ERROR 這個常量指到最近的錯誤處
E_WARNING 這個常量指到最近的警告處
E_PARSE 這個常量指到解析語法有潛在問題處
E_NOTICE 這個常量為發(fā)生異常腰鬼,但不一定是錯誤處

注意: __FILE____LINE__ 中的 ”_“ 是兩個下劃線嵌赠。表中以 E 開頭的常量是 PHP 的錯誤調(diào)試部分。


變量

1. 聲明變量

1)變量定義
// 語法: $變量名 = 變量值;
2)變量的名稱規(guī)則

PHP 中變量命名熄赡,遵循如下規(guī)則:

  • 在 PHP 中變量名是區(qū)分大小寫的
  • 變量名前面必須加美元符號($)姜挺,表示一個變量
  • 變量名不能一數(shù)字字符開頭
  • 變量名可以包含一些擴展字符(如重音拉丁字母),但是能包含非法擴展字符(如:漢字字符和漢字字母)

2.變量的賦值

1)直接賦值
// 直接賦值就是使用 ”=“ 直接將值賦給某個變量
$name = "zZ愛吃菜";
$age = "26";
2)傳值賦值
// 傳值賦值就是使用 ”=“ 講一個變量值賦給另一個變量
$name = 'zZ愛吃菜';
$myName = $name;
3)引用賦值
// 引用賦值就是一個變量引用另一個變量的值
$name = 'zZ愛吃菜';
$myName = & $name; // $myName 引用了 $name 對應(yīng)內(nèi)存地址中的值
$myName = 'zZ';
echo $name;
echo '<br>';
echo $myName;
//結(jié)果:'zZ' 'zZ'
//說明:引用賦值是將兩個變量指向同一個內(nèi)存地址彼硫,即任何一個變量被改變值炊豪,內(nèi)存地址對應(yīng)的值改變,另一個引用變量也會相應(yīng)改變

3.變量作用域

常量作用域是指變量哪些范圍能被使用拧篮,在那些范圍不能被使用词渤。PHP 有三種變量作用域:局部變量、全局變量和靜態(tài)變量串绩。

1)局部變量

局部變量就是在函數(shù)的內(nèi)部定義的變量缺虐,其作用域是所在函數(shù)

function example(){
    $a = 'hello world';
    echo '函數(shù)內(nèi)部定義的變量 a 的值為:'.$a;
}
example();
$a = 'hello china'; // 在函數(shù)外部定義變量 a
echo '函數(shù)外部定義的變量 a 的值為:'.$a;
結(jié)果:
函數(shù)內(nèi)部定義的變量 a 的值為:hello world
函數(shù)外部定義的變量 a 的值為:hello china
2)全局變量

全局變量就是被定義在所有函數(shù)外面的變量,其作用域是整個 PHP 文件赏参,但是在用戶自定義內(nèi)部是不可用的志笼,想在用戶自定義函數(shù)內(nèi)部使用全局變量沿盅,要使用 global 關(guān)鍵字聲明

// 定義全局變量 $a ,并在自定義函數(shù) example() 內(nèi)部輸出全局變量的值
$a = 'hello world';

function example(){
    global $a;
    echo '在函數(shù)內(nèi)部獲得全局變量 a 的值為:'.$a;
}
example();

結(jié)果:
在函數(shù)內(nèi)部獲得全局變量 a 的值為:hello world
3)靜態(tài)變量

通過全局變量的理解可以知道纫溃,在函數(shù)內(nèi)部定義的變量腰涧,在函數(shù)結(jié)束時其變量也會失效,但有時仍需要該函數(shù)內(nèi)的變量有效紊浩,此時就需要將變量聲明為靜態(tài)變量窖铡,聲明靜態(tài)變量只需要在變量前加 'static' 關(guān)鍵字即可

// 分別在函數(shù) 中定義靜態(tài)變量和局部變量

function example1(){
    static $a = 10;
    $a += 1;
    echo '靜態(tài)變量 a 的值為:'.$a;
}

function example2(){
    $b = 10;
    $b += 1;
    echo '局部變量 b 的值為:'.$b
}

example1();// 一次執(zhí)行該函數(shù)
example1();// 二次執(zhí)行該函數(shù)
example1();// 三次執(zhí)行該函數(shù)
echo '---';
example2();// 一次執(zhí)行該函數(shù)
example2();// 二次執(zhí)行該函數(shù)
example2();// 三次執(zhí)行該函數(shù)

結(jié)果:
靜態(tài)變量 a 的值為:11
靜態(tài)變量 a 的值為:12
靜態(tài)變量 a 的值為:12
---
局部變量 b 的值為:11
局部變量 b 的值為:11
局部變量 b 的值為:11

3. 可變變量

可變變量是一個特殊的變量,這種變量名稱是由另一個變量的值來確定的坊谁。聲明可變變量的方法是在變量名稱前加兩個 ’$‘符號

// 定義: $$可變變量名稱 = 可變變量值
$a = 'mrkj';// 定義變量
$$a = 'bccd';// 聲明可變變量费彼,該變量名稱是變量 a 的值
echo $a;
echo $$a;
$cho $mrkj;

結(jié)果:
mrkj
bccd
bccd

說明:$$a = 'bccd'; 相當(dāng)于 $mrkj = 'bccd'

總結(jié)

PHP 返璞歸真系列是對我在學(xué)習(xí) PHP 的一種回顧,看似特別基礎(chǔ)的東西口芍,當(dāng)你使用了 PHP 幾年后再回頭看就會有意想不到的收獲箍铲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鬓椭,隨后出現(xiàn)的幾起案子颠猴,更是在濱河造成了極大的恐慌,老刑警劉巖小染,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘瓮,死亡現(xiàn)場離奇詭異,居然都是意外死亡裤翩,警方通過查閱死者的電腦和手機资盅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踊赠,“玉大人呵扛,你說我怎么就攤上這事【室撸” “怎么了择份?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烫堤。 經(jīng)常有香客問我,道長凤价,這世上最難降的妖魔是什么鸽斟? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮利诺,結(jié)果婚禮上富蓄,老公的妹妹穿的比我還像新娘。我一直安慰自己慢逾,他們只是感情好立倍,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布灭红。 她就那樣靜靜地躺著,像睡著了一般口注。 火紅的嫁衣襯著肌膚如雪变擒。 梳的紋絲不亂的頭發(fā)上津滞,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天畜伐,我揣著相機與錄音,去河邊找鬼吗铐。 笑死材部,一個胖子當(dāng)著我的面吹牛毫缆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乐导,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼苦丁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了物臂?” 一聲冷哼從身側(cè)響起旺拉,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹦聪,沒想到半個月后账阻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡泽本,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年淘太,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规丽。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒲牧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赌莺,到底是詐尸還是另有隱情冰抢,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布艘狭,位于F島的核電站挎扰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巢音。R本人自食惡果不足惜遵倦,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官撼。 院中可真熱鬧梧躺,春花似錦、人聲如沸傲绣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至续搀,卻和暖如春塞琼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背目代。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工屈梁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榛了。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓在讶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親霜大。 傳聞我的和親對象是個殘疾皇子构哺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容