寫在前面
常量用于存儲不經(jīng)常改變的數(shù)據(jù)信息的量,常量的值被定義后,在程序整個執(zhí)行期間,這個值都有效,并且不可再次賦值。
變量用于存數(shù)數(shù)據(jù)臨時(shí)數(shù)據(jù)信息,是編寫程序中尤為重要的一部分,在定義變量的時(shí)候,通常要為其賦值,所以定義變量同事,系統(tǒng)會自動為該變量分配一個存儲空間來存儲變量的值。
個人項(xiàng)目
個人站點(diǎn):<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ù)字字符開頭
- 變量名可以包含一些擴(kuò)展字符(如重音拉丁字母),但是能包含非法擴(kuò)展字符(如:漢字字符和漢字字母)
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í)其變量也會失效,但有時(shí)仍需要該函數(shù)內(nèi)的變量有效,此時(shí)就需要將變量聲明為靜態(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 幾年后再回頭看就會有意想不到的收獲。