资源描述
按一下以編輯母片標題樣式,*,按一下以編輯母片,第二層,第三層,第四層,第五層,3-1 PHP,程式的基本架構,3-2 PHP,程式的撰寫風格,3-3,變數的,命名與宣告,3-4 PHP,的資料型態,3-5 PHP,的,運算子,第,3,章,PHP,的變數、資料型態和運算子,3-1 PHP,程式的基本架構,3-1-1,建立,PHP,程式,3-1-2 PHP,程式的執行過程,3-1-3 PHP,程式的標籤寫法,3-1 PHP,程式的基本架構,PHP程式的副檔名以本書為例是使用.php,事實上,PHP程式並沒有固定的副檔名,需視Apache伺服器AddType指令的設定,可能的副檔名有:.php5或.phtml等。,3-1-1,建立,PHP,程式,-,符號,PHP,程式碼是直接內嵌在,HTML,標籤,只是使用指定的符號在,HTML,文件區分哪一部分屬於,PHP,程式碼,如下所示:,上述,2,種符號都可以在,HTML,標籤中標示,PHP,程式碼,換句話說,,PHP,程式碼是置於這些符號之間。,3-1-1,建立,PHP,程式,-,範例程式,PHP,程式在,標籤區塊的,HTML,標籤共有,3,個部分擁有,PHP,程式碼,如下:,05:?,06:/,指定變數初值,07:$begin=2;,08:$end=6;,09:/,設定字型尺寸由小變大,10:for($i=$begin;$i,12:,13:,歡迎使用,PHP 5,14:,3-1-1,建立,PHP,程式,-,指定變數值和迴圈開始,指定變數值和,for,迴圈開始:,第,511,列的,PHP,程式區塊指定變數值和,for,迴圈的開始,在整段程式碼並不含任何,HTML,標籤,所以在開始和結束加上,符號,如下所示:,05:?,06:/,指定變數初值,07:$begin=2;,08:$end=6;,09:/,設定字型尺寸由小變大,10:for($i=$begin;$i,3-1-1,建立,PHP,程式,-,內含於,HTML,標籤,內嵌在,HTML,標籤:,第,12,列的,標籤使用,size,屬性指定字型尺寸,標籤屬性,size,加上,PHP,程式碼,所以屬性轉變成動態變數,隨著,for,迴圈可以產生不同的字型尺寸,同樣是位在,符號間,,echo(),可以輸出變數值,如下所示:,12:,3-1-1,建立,PHP,程式,-,迴圈結束,for,迴圈結束:,最後第,1416,列屬於,for,迴圈結束的程式碼,因為前後都擁有不同,HTML,標籤,所以此列程式碼也需要使用,符號標示出來,如下所示:,14:,PHP,程式碼是使用,符號括起。,print(),可以輸出字串(字串是使用,號括起一組字元集合),也就是,HTML,標籤,。,3-1-2 PHP,程式的執行過程,-,說明,PHP,屬於一種伺服端網頁技術,程式並不是在瀏覽端的瀏覽程式執行,而是將程式檔案公佈到,Web,伺服器後,在伺服端執行,PHP,程式,其執行的過程,如下圖所示:,3-1-3 PHP,程式的標籤寫法,-,說明,如果不使用符號,,可以使用,標籤內嵌,PHP,程式碼,如下:,標籤設定,language,屬性為,php,,表示是,PHP,程式碼,如果使用,標籤,在標籤中需要是完整的,PHP,程式碼區塊,不能擁有,HTML,標籤,,3-1-3 PHP,程式的標籤寫法,-,範例,例如:第,3-1-1,節的程式碼,如下所示:,此時需要改用,print(),輸出字串內容,如下所示:,print;,在上述字串之間的,.,號是字串連結運算子,可以連結字串。,3-2 PHP,程式的撰寫風格,3-2-1,程式敘述結束符號,3-2-2 PHP的程式註解,3-2-3,太長的程式碼,3-2 PHP,程式的撰寫風格,一個良好撰寫風格的PHP程式能夠讓程式更容易了解和維護,有效的使用縮排,更可以反應程式碼的邏輯和迴圈架構,適當的使用註解,將讓程式容易明白和維護程式碼。,3-2-1,程式敘述結束符號,PHP,程式的,;,符號代表程式敘述的結束,,這是告訴直譯程式已經到達程式敘述的最後,如下所示:,換句話說,只需使用,;,符號可以在同一列程式碼撰寫多個程式敘述,如下所示:,3-2-2 PHP的程式註解,-,說明,程式註解是程式設計上很重要的部分,因為良好的註解不但能夠輕易了解程式的目的,在維護上也可以提供更多的資訊,,PHP,程式的註解是使用,C/C+,語言的註解符號,。,3-2-2 PHP的程式註解,-,使用,在程式中以,/,符號開始的列,或是程式列位在,/,符號後的文字內容都是註解文字,如下所示:,/,/,顯示歡迎訊息,print,大家好,!;/,使用,print(),函數,如果需要跨越多行,可以使用,/*,和*,/,符號,如下所示:,/*,顯示不同尺寸的,歡迎訊息*,/,3-2-3,太長的程式碼,如果程式碼的長度太長,基於程式編排的需求,太長的程式碼並不容易閱讀,我們可以將它分成兩列來編排,因為,PHP,屬於自由格式編排的語言,如果程式碼需要分成兩列,直接分割即可,如下所示,:,print,大家好,!,這是比較長的程式碼,.,所以需要分為兩列,.;,3-3,變數的命名與宣告,3-3-1 PHP,的命名原則,3-3-2,變數與指定敘述,3-3-3,變數的參考指定敘述,3-3-4,動態變數,3-3-5 echo(),和,print(),輸出網頁內容,3-3-6,常數的宣告與使用,3-3,變數的命名與宣告,PHP,程式是由資料(,Data,)和指令(,Instructions,)所組成,如下:,資料部分:,指本章的變數(,Variables,)和資料型態(,Data Types,)。,指令部分:,指運算子、流程控制(,Control Structures,)和函數(,Functions,)。,3-3-1 PHP,的命名原則,-,說明,變數在程式碼扮演的角色是儲存程式執行中的一些暫存資料,,PHP,變數是以,$,符號開頭的名稱,,在程式中除了變數外,還需替常數、類別和函數命名。,3-3-1 PHP,的命名原則,-,原則,常數、類別和函數名稱不能使用,PHP,語法的關鍵字(,Keywords,),變數因為使用,$,符號開頭,可以使用關鍵字,不過並不建議如此命名。,名稱使用英文字母或底線,_,開頭,之後為不限長度的字母、數字和底線。,名稱區分英文字母的大小寫,,例如:,Hello,、,hello,、,hEllo,是不同的名稱。,PHP,變數在有效範圍(,Scope,)內需唯一,有效範圍請參閱第,5,章的函數。,3-3-1 PHP,的命名原則,-PHP,的關鍵字,3-3-2,變數與指定敘述,-,使用變數,在,PHP,程式的變數是以,$,符號開始的名稱。,不同於其它語言的變數需要事先宣告,,PHP,變數並不需宣告,,如果需要使用變數,直接使用指定敘述指定變數值,即,=,等號,如下所示:,$name =,陳會安,;,$score=85;,$id =1234567;,3-3-2,變數與指定敘述,-,指定敘述,當然,PHP,程式可以再次使用指定敘述設定變數成其他值,如下所示:,$score=50;,上述變數,$score,值改為字串,“50”,,此時,變數的資料型態也隨之變成字串。,換句話說,,PHP,變數的資料型態並不是程式設計者決定,而是在執行,PHP,程式時,依照變數儲存的內容來決定其資料型態,。,3-3-3,變數的參考指定敘述,-,指定敘述,指定敘述是將右邊的值指定給變數,如果是指定成另一個變數,就可以取得變數值,如下所示:,$nickname=$name;,上述程式碼是將右邊變數,$name,的值複製到左邊變數,$nickname,,變數,$name,和,$nickname,擁有相同值,如下圖所示:,3-3-3,變數的參考指定敘述,-,參考指定敘述,(,說明,),在,PHP,除了指定敘述外,還提供,參考指定敘述(,Assign by Reference,),,表示右邊變數是參考左邊的變數位址,如下所示:,$user=,上述程式碼使用,&,運算子表示參考此變數。,簡單的說,變數,$user,和,$name,表示同一個變數,換句話說,更改,$user,變數的值,就是更改,$name,變數值。,3-3-3,變數的參考指定敘述,-,參考指定敘述,(,圖例,),變數,$name,和,$user,指向同一個記憶體位址,同一個記憶體位址擁有,2,個變數名稱,,$user,稱為,$name,的別名(,Alias,)。,3-3-4,動態變數,-,建立,PHP,的動態變數是變數的變數名稱(,Variable,Variable,Name,)。首先宣告一個字串變數,如下所示:,$name=user;,變數,$name,的值是字串,如果將變數,$name,值的字串當成另一個變數名稱,只需使用,2,個,$,符號,如下所示:,$name=“,江小魚,;,程式碼將變數,$name,內容的字串當成變數,也就是指定變數,$user,的值為,“,江小魚,。,3-3-4,動態變數,-,取得變數值,取得變數值可以直接使用變數,$user,,或是使用下列,2,種方式,如下所示:,$username=$name;,$username1=$name;,程式碼可以使用,$name,取得變數,$user,的值,,PHP,使用樹狀結構儲存變數名稱,第一層的,$name,值是,user,,下一層的,$user,值是,“,江小魚,,或是加上,大括號表示各變數的階層關係。,3-3-5 echo(),和,print(),輸出網頁內容,-,使用,在,PHP,程式的,echo(),和,print(),並不是真正的函數,它是,PHP,的語言建構子(,Language Construct,),在寫法上和函數稍有不同,可以使用函數方式加上括號,也可以不加上括號,如下所示:,echo(,測試,echo(),的使用,);,echo,測試,echo(),的使用,;,print(,測試,print(),的使用,);,print,測試,print(),的使用,;,3-3-5 echo(),和,print(),輸出網頁內容,-,顯示變數值,如果需要顯示變數值,變數可以置於之後的參數字串中,或是使用字串連結運算子,.,,如下所示:,echo Hi!.$name.;,echo Hi!$name$user1$user2;,print(Hi,!.$name.$user1.);,print(Hi,!$name);,3-3-5 echo(),和,print(),輸出網頁內容,-echo(),echo(),和,print(),最大的差別,在於,echo(),可以使用,逗號分隔變數來顯示數個變數,如下所示:,echo$user1,$user2;,而且,echo(),還提供簡化寫法,可以置於,HTML,標籤中,如下所示:,我的姓名是,:,3-3-6,常數的宣告與使用,程式碼的常數是使用常數名稱取代固定的數字或字串,與其說是一種變數,不如說是名稱轉換,將一些數值的值用有意義的名稱取代。,PHP,本身擁有一些內建常數(詳細的說明請參閱本書後的各章節),我們也可以自行建立常數,,PHP,的常數是使用,define(),函數宣告且指定其值,如下所示:,define(PI,3.1415926);,define(AREA,面積,);,3-4 PHP,的資料型態,3-4-1,布林資料型態,3-4-2,整數資料型態,3-4-3,浮點數資料型態,3-4-4,字串資料型態,3-4-5,資源資料型態,3-4-6 NULL,資料型態,3-4 PHP,的資料型態,PHP,語言支援,8,種資料型態:,boolean,、,integer,、,float,、,string,、,array,、,object,、,resource,和,NULL,。,3-4-1,布林資料型態,布林(,Booleans,)資料型態變數只有,2,種值,TRUE,和,FALSE,,,TRUE,和,FALSE,值並不分英文字母的大小寫。例如:將變數指定成布林值,如下所示:,$,isPass,=True;,$,status_on,=true;,上述程式碼將變數,$,isPass,和,$,status_on,指定成布林值,TRUE,。通常布林變數是使用在邏輯運算式,如下所示:,$rate=.05,3-4-2,整數資料型態,-,說明,整數(,Integers,)資料型態是指變數的資料是整數沒有小數點,,PHP,的整數範圍需視作業系統而定,使用,32bits,的有符號整數,,其範圍為:,-2147483648 2147483647,,,PHP,並不支援無符號整數。,整數包含,0,、正整數和負整數可以使用十進位、八進位和十六進位表示,如下所示:,八進位:,0,開頭的整數值,,每個位數的值為,07,的整數。,十六進位:,0 x,開頭的數值,,位數值為,09,和,AF,。,3-4-2,整數資料型態,-,範例,一些整數值的範例,如下表所示:,3-4-3,浮點數資料型態,-,說明,浮點數(,Floating point numbers,)資料型態是指整數加上小數,例如:,3.14,、,100.5677E-10,等,,PHP,的浮點數範圍需視作業系統而定,,IEEE,格式是使用,64bits,的範圍:,4.94065645841246544e-324 1.79769313486231570e308,,其精確度可達,14,位小數點。,3-4-3,浮點數資料型態,-,範例,浮點數可以使用科學符號的,e,或,E,符號代表,10,為底的指數,一些浮點數的範例,如下表所示:,3-4-4,字串資料型態,-,字串文字值,字串文字值(,String Literal,),字串文字值就是使用,0,或多個依序的字元使用,單引號,或雙引號,括起的文字內容,,如下所示:,PHP 5,網頁設計範例教本,“Hello World!”,3-4-4,字串資料型態,-Escape,逸出字元,Escape,逸出字元,在字串中可以使用,Escape,逸出字元來顯示一些無法使用鍵盤輸入的特殊字元,如下表所示:,3-4-5,資源資料型態,PHP,是在,4.0,版新增資源(,Resource,)資料型態,這種變數是一種特殊變數,其內容是外部資源的參考。例如:執行指定函數取得,XML,剖析器、,MySQL,資料庫和檔案等,詳見第,11,、,13,和,15,章的說明。,在,PHP,程式參考外部資源時,因為,Zend,腳本語言引擎擁有垃圾收集(,Garbage Collector,)功能,程式設計者並不用擔心外部資源的記憶體配置問題,因為執行,PHP,程式時,引擎會自動歸還不再使用資源的記憶體。,3-4-6 NULL,資料型態,NULL,資料型態的值就只能是,NULL,,表示變數沒有值,變數值如果是,NULL,,其原因如下:,變數被指定成,NULL,。,變數尚未指定任何值。,變數呼叫,unset(),(這是,PHP,語言的關鍵字),,unset(),可以取消變數指定的值成為,NULL,。,NULL,資料型態的變數值是,NULL,,這個值並不分英文字母的大小寫,如下所示:,$test1=NULL;,$test2=null;,3-5 PHP,的運算子,3-5-1,運算子的優先順序,3-5-2,算術運算子,3-5-3,遞增和遞減運算,3-5-4,比較運算子,3-5-5,邏輯運算子,3-5-6,位元運算子,3-5-7,字串連結運算子,3-5-8,指定運算子,3-5-9,錯誤控制運算子,3-5 PHP,的運算子,在,PHP,的運算式(,Expressions,)是由運算子(,Operators,)和運算元(,Operands,)組成,,PHP,提供完整算術、指定、位元、比較和邏輯運算子。一些運算式的範例,如下所示:,$a+$b 1,$a=$b,$a$b&$a 1,上述運算式變數,$a,、,$b,和數值,1,是運算元,,+,、,-,、,=,、,和,&,為運算子。,3-5-1,運算子的優先順序,-,優先順序表,3-5-2,算術運算子,PHP的算術運算子(Arithmetic,Operators)是常用的數學運算子,運算元是整數或浮點數值。例如:變數$a的值為8,$b是3,各種算術運算子的範例,如下表所示:,3-5-3,遞增和遞減運算,-,說明,PHP的遞增/,遞減運算字(Increment,/Decrement Operators)是一種置於變數前或後的運算式簡化寫法。例如:變數$a的初值是5,如下表所示:,3-5-3,遞增和遞減運算,-,運算式範例,遞增,/,遞減運算字可以置於變數之前或之後,如果在前面,變數值立刻改變,如果在後面,表示在執行運算式後才改變,如下所示:,在後遞增運算,:$x+=,運算後的結果,:$x=,在前遞減運算,:-$y=,運算後的結果,:$y=,3-5-4,比較運算子,比較運算子(,Comparison Operators,)主要是用在第,4,章迴圈和條件敘述的判斷條件,比較,2,個運算元的布林值。例如:變數,$a,的值為,3,,變數,$b,的值為,4,,比較運算子的範例如下表所示:,3-5-5,邏輯運算子,PHP,提供邏輯運算子(,Logical Operators,)可以連結多個比較運算式建立複雜的運算式,如下表所示:,3-5-6,位元運算子,-,說明,PHP,的位元運算子(,Bitwise Operators,)能夠進行二進位值的位元運算,如下表所示:,3-5-6,位元運算子,-,範例,例如:,3 2=12,,如下所示:,3-5-6,位元運算子,-,位元運算結果,Not,、,And,、,Or,和,Xor,的位元運算結果(,a,和,b,代表一個位元),如下表所示:,3-5-7,字串連結運算子,字串連結運算子,.,可以連結,2,個字串成為一個字串,其範例如下表所示:,3-5-8,指定運算子,3-5-9,錯誤控制運算子,-,說明,PHP,提供,錯誤控制運算子(,Error Control Operators,),可以在函數或運算式前使用,運算子,如此可以控制程式錯誤,避免在網頁上顯示,PHP,的錯誤訊息,,如下所示:,$x=,5,;,$y=0;,$r=($x/$y);,除法算術運算式,$x/$y,會產生除以,0,的錯誤,所以在運算式前加上錯誤控制運算子,,如此網頁就不會顯示錯誤訊息。,3-5-9,錯誤控制運算子,-,開啟,track_errors,功能,PHP,程式需要取得錯誤訊息,可以在,php.ini,檔案開啟,track_errors,功能,。,在找到,track_errors,後,將預設值,Off,改為,On,,如此就可以在,PHP,程式使用,$,php_errormsg,變數取得錯誤訊息,如下所示:,echo,程式錯誤,:.$php_errormsg;,3-6 PHP,的型態轉換,3-6-1,自動型態轉換,3-6-2,強迫型態轉換,3-6-1,自動型態轉換,自動型態轉換(,Automatic Type Conversions,)並不需要特別語法,運算式如果擁有不同型態的運算元,就會將儲存的資料自動轉換資料型態,如下表所示:,3-6-2,強迫型態轉換,-,說明,在,PHP,可以使用型態轉換運算子(,Cast Operator,)在運算式強迫轉換資料型態,如下表所示:,3-6-2,強迫型態轉換,-,語法,型態轉換運算子使用的語法,如下所示:,(,型態名稱,),運算式或變數,語法可以將運算式或變數強迫轉換成前面括號的型態。,3-6-2,強迫型態轉換,-,範例,例如:取得除法,17/5,結果的整數部分,就可以使用型態轉換運算子,將運算結果的浮點數轉換成整數,例如:,$a=17,、,$b=5,,如下所示:,$c=(int)($a/$b);,程式碼將變數,$a,和,$b,的運算結果強迫轉換成整數。,
展开阅读全文