寫在前面
常量用于存儲不經(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 幾年后再回頭看就會有意想不到的收獲箍铲。