標籤:php
PHP編碼規範
每行代碼的字元數應控制在80以內
對於只含有PHP代碼的檔案,將檔案結尾標記忽略
縮排應該能都反映出代碼的邏輯結果,盡量使用四個空格
資料類型
資料類型是具有相同特性的一組資料的統稱
資料類型用來區分不同的資料;由於資料在儲存時所需要的容量各不相同,不同的資料就必須要分配不同大小的記憶體空間來儲存,所以就要將資料劃分成不同的資料類型。
在PHP中只要涉及到資料的地方都會涉及到資料類型。如變數、函數的參數及傳回值、對象的屬性等地方都會涉及到資料類型。
PHP支援8種未經處理資料類型和三種偽類型。
其中未經處理資料類型包括:
-標量類型(Scalar Type)
boolean(布爾型)
Integer(整型)
float(浮點型)
string(字串)
-複合類型(Compound Type)
array(數組)
object(對象)
-特殊類型(Special Type)
resource(資源)
NULL(空值)
整型
整型可以使用十進位、十六進位、八進位或者二進位表示
-位元字,數字前必須加上0b
-八位元字,數字前必須加上0
-十六進位數字,數字前必須加上0x
如果向八進位傳遞了一個非法數字,則後面其餘數字都會被省略
整型的儲存範圍
整型的字長和平台有關
通常最大值是大約二十億(32位有符號)
64位平台下的最大值通常是大約9e18
<?phpecho PHP_INT_MAX; //輸出Integer的最大值echo PHP_INT_SIZE; //輸出Integer值的字長
輸出語句
輸出一個或多個字串可以通過echo語句實現
echo語句的文法結構
void echo (string $arg1 [,string $...])
<?phpecho ("Hello World"); //輸出 Hello Worldecho "Hello World"; //輸出 Hello Worldecho "Hi," , "Hello World"; //輸出 Hi,Hello Worldecho 3 //輸出 3,數字3已經被轉換成字串“3”
如果要給echo傳遞多個參數,不能使用小括弧
所有輸出的參數都將轉換成字串類型
如果要列印一個或多個運算式的結構資訊,包括運算式的類型與值,可以通過var_dump函數實現。
var_dump函數的文法結構:
void var_dump(mixed $expression [,mixed $...])
<?php
var_dump(‘php‘); //輸出string(3)“PHP”var_dump(4); //輸出int(4)
使用函數
函數是一個被命名的獨立程式碼片段。函數用於執行特定任務,並可以給調用它的程式返回一個值。
函數類型有
-系統函數,由PHP核心或特定的函數庫提供的函數
-自訂函數,由使用者根據需要自訂的函數
調用函數的方法
傳回值 函數名([參數,...])
整型溢出
如果數字超出integer的範圍,將會被解釋為float
如果運算結果超出integer範圍,也會返回float
<?php$d = 2147483649;var_dump($d); //輸出float(2147483649)$n = 2147483640;var_dump($n); //輸出int(2147483640)$t = 88;var_dump($t); //輸出int(88)$f = $n + $t;var_dump($f); //輸出float(2147483728)
浮點型
浮點型(也叫浮點數float,雙精確度數double或實數real)
浮點型(float)資料的字長和平台相關
通常最大值是1.8e308並具有14位十進位數位精度
布爾型
布爾型使用關鍵字TRUE/FALSE表示。兩者不區分大小寫
布爾值結果通常會被傳遞給控制流程程式語句。
<?php$isHot = true;$isDeleted = false;var_dump($isHot); //輸出bool(true)var_dump($isDeleted); //輸出bool(false)
字元型
字串string就是由一系列的字元組成,其中沒個字元等同於一個位元組。這意味著PHP只能支援256的字元集,因此不支援Unicode。
string最大可以達到2GB。
字串的表達方式
單引號
雙引號
Heredoc文法結構
Nowdoc文法結構
<?php$str1 = ‘PHP‘;$str2 = "String";var_dump($str1); //輸出 string(3)“php”var_dump($str2); //輸出 string(6)“String”
轉義符
| 屬性值 |
說明 |
| \n |
換行 |
| \r |
斷行符號 |
| \t |
水平定位字元 |
| \v |
垂直定位字元 |
| \f |
換頁符 |
| \\ |
反斜線 |
| \$ |
貨幣符號 |
| \‘ |
單引號 |
| \" |
雙引號 |
字串類型
聲明字元創類型變數,然後輸出
聲明帶有轉義符的字串類型變數,然後輸出,並且通過查看瀏覽器原始碼查看結果
轉義符的引號與HTML實體的引號
PHP代碼中引號如果需要直接列印到瀏覽器,那麼雙引號/單引號就必須採用HTML實體表示;如果引號需要在瀏覽器的原始碼中出現,那麼就必須採用轉義符
單引號和雙引號的區別
單引號只能解析\‘和\\;雙引號可以解析所有轉義符。
單引號內變數不能被解析;雙引號內的變數可以被解析。
建議字串盡量使用單引號的表示方式。這樣可以提高解析速度
花括弧文法
<?php$str = ‘app‘;echo "<p> The $str is the abbreviation of Application</p>";echo "<p> I bought an $strle</p>";
結果
The app is the abbreviation of Application
I bought an
當PHP解析器遇到一個貨幣符號($)時,解析器盡量組合多的標識以形成合法的變數名。可以用花括弧來明確變數名稱的界線。
正確寫法
<?php$str = ‘app‘;echo "<p> The {$str} is the abbreviation of Application</p>";echo "<p> I bought an ${str}le</p>";
string中的字元可以通過一個從0開始的下標,用花括弧包含對應的數位形式來訪問和修改。
<?php
$str = ‘application‘;echo $str{4}; //輸出i$str{4} = ‘t‘;echo $str{4}; //輸出t
用超出字串長度的下標寫入將會拉長該字串並以空格填充。非認證類型下標會被轉換成整數。
Heredoc文法結構
<?php$str = <<< EOD Example of string spanning multiple lines using heredoc syntaxEOD;?>
結束時所使用的標識符必須在該行的第一列。
結束標識符這行除分號外,不能包含其他字元。
Heredoc結構可以解析轉義符。
Heredoc結構內的變數可以被解析。
Nowdoc文法結構
<?php$str = <<< ‘EOD‘ Example of string spanning multiple lines using heredoc syntaxEOD;?>
結束時所使用的標識符必須在該行的第一列。
結束標識符這行除分號外,不能包含其他字元。
Nowdoc結構不進行解析操作
複合類型
允許將多個相同類型的項聚集起來,表示為一個實體。
複合類型可以儲存多個資料項目
複合類型的分類
數組(Array)
對象(Object)
<?php$arr = array(34,67,8,25); //數組$obj = new stdClass(); //對象echo gettype($arr); //輸出arrayecho gettype($obj); //輸出object?>
特殊類型
提供某種特殊用途的類型,無法歸入其他任何類型
特殊類型包括
-空值(NULL)
-資源(Resource)
空值
NULL表示一個變數沒有值
在下列情況之一的變數被認為是NULL
-沒有賦值的變數
-變數賦值為NULL
-使用unset函數銷毀的變數
<?phpvar_dump($username); //輸出NULL$password = null;var_dump($password); //輸出NULL$age = 26;unset($age);var_dump($age); //輸出NULL
資源
一種特殊的資料類型,用來表示一種PHP的外部資源,例如資料庫訪問,檔案訪問、目錄操作、映像操作等。
程式員將永遠無法直接聲明這種類型的變數,必須通過專門的函數訪問。
偽類型
本質上來說並不是真正的資料類型
為說明某些情況而“自封”的資料類型,包括:
-混合(mixed)
-數值(number)
-回呼函數(callback)
-void
混合
mixed說明參數/傳回值可以是多種不同類型
mixed不一定是所有資料類型
例如:gettype()函數可以接收所有類型的參數;str_replace()函數可以接收字串類型和數群組類型的參數。
<?php$i=3;$n=0.5;$t=‘1‘;echo gettype($i);echo gettype($n);echo gettype($t);
數值
numbet說明參數/傳回值可以是integer或者float
例如:pow()函數可以接受整型或浮點型的參數;並且傳回值的資料類型也可能為整數或浮點數。
pow函數用於實現冪運算
文法:number pow(nukber $base,number $exp)
<?phpvar_dump(pow(2,8));var_dump(pow(2.5,2));
回呼函數
回呼函數以接受使用者自訂的函數作為參數。還可以是一個對象的方法,包括靜態類的方法。
void
void作為參數列表意味著函數不接受任何參數
void作為傳回型別意味著函數的傳回值是無用的
例如:date_default_timezone_get()函數不接受任何參數
date_default_timezone_get()函數用於擷取日期時間函數所使用的時區
文法:string date_default_timezone_get(void)
<?phpecho date_default_timezone_get();
資料類型總匯
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/85/7E/wKiom1elflKg3_LBAACq69VqUZA579.png" title="資料類型.png" alt="wKiom1elflKg3_LBAACq69VqUZA579.png" />
變數處理函數
變數處理函數屬於PHP核心的組成部分。也就意味這隻要Web伺服器支援PHP即支援變數處理函數
is_int、is_integer、is_long函數可以檢測變數是否是整數
文法:bool is_int(mixed $var)
<?phpvar_dump(is_int(23)); //bool(true)var_dump(is_int("23")); //bool(false)var_dump(is_int(23.5)); //bool(false)var_dump(is_int(NULL)); //bool(false)
變數處理函數還包括
is_float、is_double、is_real 檢測變數是否為浮點型
is_string 檢測變數是否為字串類型
is_bool、is_boolean 檢測變數是否為布爾型
is_scalar 檢測變數是否為標量類型
is_arry 檢測變數是否為數組
is_object 檢測變數是否為對象
is_null 檢測變數是否為空白值
is_resource 檢測變數是否為資源
is_numeric 檢測變數是否為數字或數字字串
is_callback 檢測變數是否為回呼函數
is_null、empty、isset的區別
is_null函數檢測變數是否為NULL。如果為NULL,返回TRUE,否則返回FALSE
文法:bool is_null(mixed $var)
empty函數檢測檢查一個變數是否為空白。如果變數是非空或非零的值,則empty()返回FALSE;否則,返回TRUE
文法:bool empty(mixed $var)
isset函數禦用檢測變數是否設定,並且不是NULL
文法:bool isset(mixed $var [,mixed $...])
| 運算式 |
gettype($n) |
is_null |
empty |
isset |
| $n |
NULL |
true |
true |
false |
| $n = ""; |
string |
false |
true |
true |
| $n = null; |
NULL |
true |
true |
false |
| $n = arrary(); |
array |
false |
true |
true |
| $n = true; |
boolean |
false |
false |
true |
| $n = false; |
boolean |
false |
true |
true |
| $n = "0"; |
string |
false |
true |
true |
| $n = 0; |
integer |
false |
true |
true |
本文出自 “擎凇離雨癡木月” 部落格,請務必保留此出處http://kinrey.blog.51cto.com/10492082/1835376
PHP編碼規範