php常量,提前定義常量,魔術常量及基本數據類型
常量
定義:
形式一
// define("PI",常量值); define("PI",3.14); define("school","講理");
形式二
// 定義形式二 const cc1 = 1234; const cc2 = "abcd";
使用:
形式一
// 直接使用常量名 echo "PI的值:".PI;
形式二
// 通過constant函數,靈活性體現-->常量名也能夠變 // 利用變量拼湊常量名) echo "PI的值:".constant("PI");
ps:
- 推斷常量是否存在:使用
defined(常量名)
函數推斷。 - 使用一個沒有定義的常量:在php中,當使用一個沒有定義的變量和常量的時候都會報錯。可是不會輸出沒有定義變量的值,會輸出沒有定義常量的值,其值就是常量名。
提前定義常量
定義:系統中預先定義好的一些常量,大約有幾百個。我們僅僅須要知道當中幾個即可:
- M_PI:????????圓周率
- PHP_OS:??????php執行所在的操作系統
- PHP_VERSION:???php版本
- PHP_INT_MAX:???php整數的最大值
… 很多其它參考php手冊
魔術常量
定義:事實上僅僅是常量的形式。但沒有常量的“恒常”,其值事實上會變化的,僅僅是非常少的幾個:
- _FILE_ :代表當前網頁文件的完整物理路徑
- _DIR_ :代表當前網頁文件所在的目錄
- _LINE_ :代表當前這個變量名所在的“行號”
數據類型
整體劃分:
在php中有8中數據類型
基本類型(標量類型)
- 整數類型:int integer。
- 浮點型類型: float,double,real。
- 字符串類型: string;
- 布爾類型: bool,boolean。
復合類型:
- 數組:array;
- 對象:object。
特殊類型:
- 空類型:null,這樣的類型僅僅有一個數據,那就是null。
- 資源類型:resource,如數據庫的連接資源。
整數類型
整數類型有4種寫法:
$n1 = 123; // 10進制寫法 $n2 = 0123; // 8進制寫法 $n3= 0x123; // 16進制寫法 $n4 = 0b11101 // 二進制寫法
進行轉換:
10進制轉其它3種進制:
- decbin(一個10進制數字): 10_>2,返回的是二進制的字符串。
- decoct(一個10進制數字): 10->8,返回的是8進制的字符串。
- dechex(一個10進制數字): 10->16,返回的是16進制的字符串。
其它3種進制轉10進制
- bindec(一個二進制字符串): 2->10,返回的是10進制的字符串;
- octdec(一個八進制字符串): 8->10,返回的是10進制的;
- hexdec(一個十六進制字符串): 16->10,,返回的是10進制的。
浮點類型:
浮點數的兩種表示形式:
常規寫法
v1 = 123.456
科學計數法:帶一個特殊符號
$v1 = 123.456E2 // 含義為:123.456乘以10的2次方,結果是浮點數 $v2 = 123.456E3; // 含義為:123.456乘以10的3次方,結果是浮點數 $v3 = 123E4; // 含義為:123乘以10的4次方,結果還是浮點數
浮點數使用的細節:
浮點數不應進行大小比較:
- 全部數字,終於的表示形式,都是二進制;
- 浮點數的二進制形式,不能全然表達準確。
- 因此浮點數的比較是不可靠的。
解決的方法:將浮點數轉換成整數(乘以10的多次方)再比較
浮點數的小數部分可能無法用二進制精確表示;
當整數的運算結果超出整數的表示範圍為的時候。系統自己主動將結果轉換成浮點型.
字符串
四種形式:
$str1 = "字符串內容..."; $str2 = ‘字符串內容...‘; $str3 = <<<"標識符A" 字符串內容 標識符A; $str4 = <<<"標識符B" 字符串內容 標識符B;
單引號字符串:
// 單引號字符串。=,須要轉義或能夠識別的轉義符有:\和‘ $str1 = ‘abcdefg‘;
雙引號字符串:
// 雙引號字符串,須要轉義或能夠識別的特殊符號有:\,",\n,\r(回車符),\t(tab符),$。 // 事實上就是取消了其在雙引號字符串中的變量的“起始含義” $str2 = "abcdefg";
雙引號定界符字符串:
// 雙引號定界字符串,須要轉義能夠識別的特殊符號有:\n,\, //\r,\t。雙引號和單引號能夠直接寫出 $str4=<<<"ABCD" abcdef,這裏事實上就是字符串的內容 ABCD;
註意:
- 上述標識符是我們自己取得一個相似常量名的“名字”,能夠任意;
- 該字符串的結束一行,僅僅能出現該標識符本身和一個分號。其它什麽都不能夠出現,包含空格;
- 上述標識符的雙引號能夠省略(不推薦);
- 標識符僅僅是一種形式,能夠反復出現。
單引號定界字符串:
// 單引號定界字符串,沒有須要轉義或者能夠識別的特殊字符 $str3=<<<‘ABCD‘ abcdef,這裏事實上就是字符串的內容 ABCD;
布爾類型(僅僅有兩個數據:true 或 false)
單詞:bool,boolean
常見使用形式
對變量直接作推斷(參考手冊);
定義一個變量,用作推斷標識。
類型轉換
自己主動轉換:
在不論什麽運算中,假設須要某種類型的數據。而給出的數據不是該類型。通常都會發生自己主動類型轉換,
比方:octdec(),bindec()…
在php中。算術運算符(包含-,*,/,%),就僅僅是對數值進行計算,如
$sum = "1" + "2"; // sum的值就是3
強制類型轉換:
?自己主動類型轉換時由”運算符“運算的時候決定的,而強制類型轉換就是顯示通過語法轉換目標數據類型:
// 形式為:(要轉換的數據類型)數據 $i = 10; $s = (string)$i;
通常的轉換目標類型有:(int),(float),(string),(bool),(array),(object)
改變原來變量的數據類型:
?上述強制類型轉換中,並不會改變該變量本身的數據類型。相應,有一個語法是直接改變原來變量的數據類型:
settype($變量名,"目標類型");
類型相關的函數:
- var_dump():用於輸出變量的”完整信息“。差點兒僅僅用於調試代碼;
- getType($變量名):獲取該變量的類型名字,返回一個表示該類型的名字的字符串,比方:”string:,”bool”,”double”。
。。。
- setType($變量名,”目標類型“);
- isset(),empty(),nuset()。
- is_XX類型($變量名):系列函數,推斷是否是某種數據類型
- is_int();
- is_string();
- is_bool();
- is_float();
- is_numeric();推斷是否是一個數字
- is_scalar();推斷是否是一個標量
- is_array();
- is_object();
- is_null();推斷是否是空
php常量,提前定義常量,魔術常量及基本數據類型