PHP(Hypertext Preprocessor,超文本預處理器)。
一、PHP入門
1、指令分隔符“分號”
語義分為兩種:一種是在程序中使用結構定義語句,例如流程控制、函數定義、類的定義等,用來定義程序結構使用的語句。在結構語句后面不能使用分號作為結束;
另一種是在程序中使用功能執行語句,例如變量的聲明、內容的輸出、函數的調用等,是用來在程序中執行某些特定功能的語句,這種語句也可以成為指令,php需要在每個指令后用分號結束。
2、程序注釋
php注釋的三種形式:
以“/*”和“*/”閉合多行注釋符,
“//”和"#"開始的單行注釋符
3、在程序中使用空白的處理
下列情況應該總是使用兩個空行:
一個源文件的兩個代碼片段之間。
兩個類的聲明之間。
下列情況應該總是使用一個空行:
兩個函數聲明之間。
函數內的局部變量和函數的第一條語句之間。
塊注釋或單行注釋之前。
一個函數內的兩個邏輯代碼段之間,用以提高可讀性。
空格的應用規則:
一般用於關鍵字和括號之間,函數名與左括號間不應使用空格。
一般函數的參數列表中的逗號后面添加空格。
數學算式的操作數與運算符之間應該添加空格(二進制元算與醫院元算除外)。
for語句中表達式應該用逗號分開,后面添加空格。
二、變量
第一次賦值,就創建了變量。必須使用"$"后跟變量名表示。再次給該變量賦值會覆蓋之前的變量。
php變量聲明以后有一定的范圍,變量的范圍即它定義的上下文背景(也就是它生效范圍)。大部分的php變量如果不是在函數里面聲明的,只有在聲明處到文件結束的一個單獨范圍內使用。這個單獨的范圍跨度不僅是<?php 標記開始處到
?>結束標記處使用,可以在一個頁面的所有開啟的PHP模式下使用,也包含了include和require引入的文件。如果使用COOKIE或SESSION還可以在多個頁面中應用。
在變量的使用范圍周期內,我們可以借助unset()函數釋放指定的變量,使用isset()函數檢測變量是否設置和使用empty()函數檢測一個變臉是否為空。
empty()與isset()的區別:
如果empty()函數的參數是非空或非零的值,則empty()返回false。""、0、“0”、null、false、array()、var $var、以及沒有任何屬性的對象都將被認為是空的。如果參數為空,則返回true。
如果函數isset()參數存在,則返回true。
若使用isset()檢測一個被設置成null的變量或使用unset()釋放了一個變量,都將返回false。
注意:字節NULL("\0")並不等同於null常數。
建議:使用!empty($var)判斷變量存在且不能為空。
1、變量的命名
變量名區分大小寫。但內置結構和關鍵字以及用戶自定義的類名和函數名都是不區分大小寫的。
駝峰命名法。如:$aaaBBBccc。
2、可變變量
可變變量可使用一個普通變量的值作為這個可變變量的變量名。
3、變量的引用賦值
變量總是傳值賦值。也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。改變其中一個變量的值,將不會影響到另一個變量。
引用賦值,將“&”加到變量前。將變量的引用方式復制給新的變量,指向共同的引用,改變任何一個變量的值,都會影響另一個變量。只有有名字的變量才可以引用賦值。不會將引用賦值的兩個變量在內存上同體,只是把各自的值相關聯起來,基於這一點,unset()不會導致另一個變量消失。
4、變量的類型
4種標量類型:boolean(布爾型)、integer(整型)、float(浮點型)、string(字符串)
2種復合類型:array(數組)、object(對象)
2種特殊類型:resource(資源)、NULL
如果想看某個表達式的值和類型,可以使用函數var_dump()。
布爾類型
以下值被認為是false
1)布爾值
false
。
2)整型值0(零)為假,-1和其他非零值(不論正負)一樣,被認為是true。
3)浮點型值0.0(零)。
4)空白字符串和字符串“0”
5)沒有成員變量的數組。
6)特殊類型NULL
整型
有最大范圍2 147 483 647 。PHP不支持無符號整數,如果給定的數超出最大范圍,將會被解釋為float。
浮點型
永遠不要比較兩個浮點數是否相等。
如果需要更高的精度,應該使用任意精度數學函數或gmp()函數。
字符串
單引號字符串:
如果要在單引號中引用單引號,需要使用反斜杠(\)轉義。
如果在單引號之前或字符串結尾需要出現一個反斜線,需要用兩個反斜線表示。
其中出現的變量不會被變量的值替代。即php不會解析單引號中的變量,而是將變量名原樣輸出。定義簡單字符串時,單引號字符串效率更高。
雙引號字符串:其中的變量會被解析。
定界符字符串:
使用定界符<<<開始,之后提供一個標識符,然后是包含的字符串,最后是同樣頂格書寫的標識符。
定界符文本處理不能初始化類成員以外,表現的就和雙引號字符串一樣,只是沒有雙引號。這意味着在定界符文本中不需要轉義引號,不過仍然可以用以上列出來的在雙引號中可以使用的轉義符號。而且定界符中的變量也會被解析,但當在定界符文本中表達復雜變量時和字符串一樣同樣也需要注意。所以能夠很容易地使用定界符定義較長的字符串,通常用於從文本或者數據庫中打斷地輸出文檔。
數組(Array)
使用print_r()函數查看數組中的全部內容。
對象(Object)
1
2
3
4
5
6
7
8
9
10
11
|
<?php
class
Person{
var
$name
;
function
say(){
echo
"Doing foo"
;
}
}
$p
=
new
Person();
$p
->name=
"staven"
;
$p
->say();
?>
|
->:表示對象屬性、方法的引用
資源類型(Resource)
NULL類型
特殊的NULL值表示一個變量沒有值,NULL類型唯一可能的值就是NULL。NULL不表示空格,也不表示零,也不是空字符串,而是表示一個變量的值為空。NULL不區分大小寫,在下列情況下一個變量被認為是NULL。
a)將變量直接賦值為NULL。
b)聲明的變量尚未被賦值。
c)被unset()函數銷毀的變量。
偽類型
mixed:說明一個參數可以接受多種不同的(但並不必須是所有的)類型。例如getype()可以接受所有的php類型,str_replace()可以接受字符串和數組。
number:說明一個參數可以是integer或者float。
callback:有些諸如call_user_function()或usort()的函數接受用戶自定義的函數作為一個參數。callback函數不僅可以是一個簡單的函數,他還可以是一個對象的方法,包括靜態類的方法。一個php函數用函數名字符串來傳遞。可以傳遞任何內置的或者用戶自定義的函數,除了array(),echo(),empty(),eval(),exit(),isset(),list(),print()和unset()。
數據類型之間相互轉換
自動轉換通常發生在不同數據類型的變量混合運算時,若參加元算量的類型不同,則顯轉換成同一類型,然后在進行運算。通常只有四種標量類型(integer、float、string、boolean)才使用自動類型轉換。這並沒有改變這些運算書本身的類型,改變的近視這些運算數如何被求值。自動類型轉換雖然石油系統自動完成的,但在混合運算時,自動轉換要遵循轉換按數據長度增加的方向進行,以保證精度不降低。

有布爾型值參與運算時,true將轉化為整型1,flase將轉化為整型0后再參與運算。
有NULL值參與運算時,NULL值轉化為整型0在進行運算。
有integer型和float型參與運算時,先把integer型變量轉換成float類型后在進行運算。
有字符串和數字型(integer、float)數據參與運算時,字符串先轉換為數字,在參與運算。轉化后的數字是從字符串開始的數值字符串,如果在字符串開始的數值型字符串不帶小數點則轉換為integer類型數字。如果帶有小數點則轉換為float類型數字。
強制類型轉換
再要轉換的變量之前加上用括號括起來的目標類型,也可以使用具體的轉換函數,即intval()、floatval()、strval()或者用setType()函數轉換類型。
intval()、floatval()、strval()
強制類型轉換沒有改變變量本身的類型,而是通過轉換將得到的新類型的數據賦值給新的變量,原變量的類型和值不變。如果需要改變自身的類型與值,可以使用setType()函數來設置變量的類型。
變量類型的測試函數
is_bool():判斷是否是布爾型。
is_int()、is_integer()和is_long():判斷是否是整型。
is_float()、is_double()和is_real():判斷是否是浮點數。
is_string():判斷是否是字符串。
is_array():判斷是否是數組。
is_object():判斷是否是對象。
is_resource():判斷是否是資源類型。
is_null():判斷是否為空。
is_scalar():判斷是否是標量,也就是一個整數、浮點數、布爾型或字符串。
is_numberic():判斷是否是任何類型的數字或數字字符串。
is_callable():判斷是否是有效的函數名。
三、常量
常量只能包含四種標量數據。
常量的定義
define(string name,mixed value[,bool case_insensitive]);
第一個參數為常量名,第二個參數為常量的值或表達式,第三個參數是可選的,如果把case_insensitive設為true,則常數將會定義成不區分大小寫。如果只想檢測是否定義了某常量,用defined()函數。
預定義常量
循環語句
break
在循環語句中中斷循環語句,也就是結束循環語句的執行。
break語句可以將深埋在嵌套循環中的語句退出指定層數或直接退出最外層,break是接受一個可選的數字參數來決定跳出幾重語句。break可以跳出幾重循環語句或是幾重switch語句。
continue
continue 語句只能使用在循環語句內部,功能是跳過該次循環,繼續執行下一次循環結構。在while和do-while語句中continue語句跳轉到循環條件處開始繼續執行,對於for循環隨后的動作是變量更新。.
接受一個可選數字參數來決定條出多重語句。
在循環中遇到continue語句后,就不會執行該循環中位於是continue后的任何語句。
continue語句用於結束循環,繼續下一次循環。
exit
當前腳本只要執行到exit語句,而不管它在那個結構中都會直接退出當前腳本。exit()是一個函數,die()函數就是exit()函數的別名,可以帶有一個參數輸出一條信息,並退出當前腳本。
函數