Download presentation
Presentation is loading. Please wait.
1
第6章 PHP基本語法介紹
2
6.1 Hello World程式
3
PHP 的程式碼的寫法 是在<?php和?>標籤之內崁入PHP的程式,<?php 代表的是 PHP 程式碼的開頭,?>代表的是程式碼的結束 。 程式碼的每一行後面必須加上分號(;)當作程式的結束。
4
PHP程式碼的格式一
5
PHP程式碼的格式二 (不用分行和縮排 )
6
寫好的網頁程式 要放在: 在瀏覽器輸入http://localhost/ch06/Ex6-11.php測試程式。
(1).個別安裝:C:\Program Files\Apache Group\Apache2\htdocs的目錄或其子目錄下。 (2).單一安裝:c:\appserv\www的目錄或其子目錄下(註:像本書建了ch06子目錄放此章節的程式, 在瀏覽器輸入
7
範例6-1:Ex6-1.php
8
圖6-1:Hello World程式實例
9
說明: 看出來了嗎?PHP的程式是崁在html網頁內的<body>和</body>之標籤內,所以真正的PHP語言程式碼是在範例的6~8行。此範例故意將全部的標籤印出來,後面的範例將只敘述PHP的程式碼,省略其他HTML的標籤。PHP 的程式碼的寫法,是在<?php和?>標籤之內崁入PHP的程式。 第8行的echo 語法是 PHP 的語法,用來做輸出用,輸出"Hello! World!"一句話。
10
echo 語法 echo 是 PHP 的語法,用來做輸出。
11
範例6-2
12
圖6-2:斷行程式實例
13
說明: 1. PHP與HTML的換行方式,PHP 的程式碼中(本文)利用 Enter做的換行動作,並不是在瀏覽器畫面的實際換行,瀏覽器只認得HTML標籤,所以輸出畫面的換行必須在echo的敘述中,加入使用 HTML 語法中的 <br> 換行標籤。(加上 <br>或<p>,可以使得瀏覽器在顯示該字串時產生換行的效果。)
14
註解 1.「//」 之後的字到該行的結束均為註解,此為C 語言、C++ 語言的註解方式。
3. 「#」 之後的字到該行的結束均為註解,此為UNIX 的 Shell 語言的註解方式。
15
範例6-3:Ex6-3.php
16
圖6-3:註解程式實例
17
不能讓註解陷入巢狀迴圈當中 不能讓註解陷入巢狀迴圈當中,否則會引起錯誤。如下面範例在多行註解/*和*/中,又包含了另一個多行註解( /* 巢狀註解會引起問題 */)。
18
範例6-4:Ex6-4.php
19
圖6-4:錯誤註解程式實例
20
6.2 常數和變數
21
常數 常數是一個簡單數值的標識名字。如同其名稱所暗示的,在程式執行期間該值並不會改變。
合法的常數名以字母或底線開始,後面跟著任何字母,數字或底線。 常數的範圍是全區域的,也就是說不用管範圍就可以在代碼的任何地方使用。 當常數定義時,前面不需要加「$」 。 常數只能包含標準資料型態(boolean, integer, float, string) 。
22
常數最常用到的有下列2種函數 define()函數: 用來定義常數。 constant()函數: 用來讀取常數的值。
23
範例6-5:Ex6-5.php
24
圖6-5:常數程式實例
25
表6-1:PHP內建常數
26
變數 在 PHP 中,變數在PHP中是以“$”(錢字號)來表示!也就是說只要以 $ 開頭的單字是變數, 並且變數名稱有大小寫之分
27
兩個不同的變數
28
變數的命名原則 變數的名稱只能夠是a~z(大小寫皆可)、0-9、_(底線),並且不可以由數字開頭
29
正確的命名方式
30
比較好的變數命名的原則
31
變數不需要事先經過宣告 你可以隨時在程式中使用一個新的變數,而不需要事先的宣告。
雖然變數不需要經過宣告,但是一個好的程式設計師,會在規劃的時候,就將各種會使用到的變數名稱、型態規劃和整理出來成檔案,以便在程式撰寫的途中能有依循的標準
32
表6-2 程式的變數整理
33
變數的型態 變數的命名和資料型態無關,而是看變數的初始值來決定屬於自己的型態,這個型態指的是變數的種類,
而變數可以PHP提供八種資料型態,分別是:布林值、整數值、浮點數、字串、陣列、物件、資源(resource)、空(NULL)。
34
變數型態
35
範例6-6:Ex6-6.php
36
圖6-6:變數程式實例
37
預設變數 PHP 為它執行的程式提供了大量的預設變數,當然你在命名變數要避開這些變數。
38
表6-2:PHP預設變數
39
表6-2:PHP預設變數(續)
40
6.3資料型態
41
布林值型態 值可以是TRUE或FALSE其中之一,用於在類似if的序述中「判斷值」。
42
布林值型態
43
範例6-7:Ex6-7.php
44
圖6-7:布林值程式實例
45
說明: echo 出來true的值是1, echo 出來flase的值是空(Null)。
46
整數值型態 整數值型態是最簡單的型態,對應於包括正負數的簡單整數,整數值的範圍是Z = {..., -2, -1, 0, 1, 2, ...}。
47
範例6-8:Ex6-8.php
48
圖6-8:整數程式實例
49
說明: 8進位數和16進位數,當然是以二進位數儲存在電腦內,但是最後輸出來時是以十進位數的轉換結果。
50
浮點數 浮點數又稱為floats、doubles、real numbers。
浮點數的字長和平台相關,通常最大值是 1.8e308 並具有 14 位十進制數字的精度(64 位 IEEE 格式)。
51
浮點數範例
52
字串 PHP字串的表達方式有三種:1.單引號,2.雙引號,3.heredoc語法。第3種heredoc是使用heredoc語法(“<<<”) ,這種方法因為很少人使用,故不介紹 。
53
1.單引號 這種方式相當的簡單,只需在字串的前後加上單引號( ' )即可。
54
2.雙引號 若將字串以雙引號( " )圍住,使用法和單引號法相同,有一點要注意的是雙引號內的單引號( ' )會當成字串中的文字使用
55
表6-3: 跳脫字元
56
錢($)的符號 當剖析器遇到錢($)的符號時,會把它當是一個變數名稱
57
取出字串中的字元 要取出字串中的字元,可在字串後面使用大括弧將偏移量括弧起來,就可得到該偏移量在字串中所代表的字元。偏移量的起始值為零(0)
58
字串連接 要將字串連接起來可以使用點( . )這個運算元,而不是使用加號(+)。
59
轉換字串 如果數字字串中包含了'.'、'e'、'E'這些字元,在轉換後會視為是浮點數的值。
60
範例6-9:Ex6-9.php
61
圖6-9:字串程式實例
62
陣列 陣列是一個結構性的資料儲存空間,在程式設計上是不可或缺的工具。 陣列的索引,不一定是數字編號,也可以是字串。
63
陣列
64
初始化陣列 有幾種方式: 1.直接指定索引值, 2.自動索引, 3.使用array函數
65
1.直接指定索引值
66
圖6-10:陣列程式實例
67
數量陣列(scalar array ) $week[0] = "Monday"; 以數值做索引的陣列稱為「數量陣列」。
68
聯想陣列(associative array)
$week["Thursday"] = 4; 以字串做索引的陣列稱為「聯想陣列」。
69
2.自動索引
70
3.使用array函數
71
二維陣列 二維陣列和多維陣列的初始化與一維陣列方法相同
72
範例6-11:Ex6-11.php
73
圖6-11:二維陣列程式實例
74
也可以寫成如下:
75
陣列的內部指標 PHP 裡的陣列事實上是利用資料結構中的雙向鍵結串列來維護的
76
表6-4: PHP 陣列相關函數 (ref. Ex6-array.php)
77
表6-4: PHP 陣列相關函數(續)
78
物件 初始化(initialize)物件,可以使用new這個語法。
79
範例6-12:Ex6-12.php
80
圖6-12:物件程式實例
81
資源(resource) 是個特殊的變數,它是被特殊的函式所建立並加以使用。
82
資料庫連線語法
83
NULL 這個特殊的值NULL,所代表的意思是變數的值是空的
84
如果變數符合下列三點之一,變數的值會被視為是NULL
變數的值是NULL (* NULL是不分大小寫的)。 變數並沒有被設定任何的值。 變數己經被unset( )這個函式所刪除了。
85
自動轉換型態 使用運算元"+",自動地改變資料型態。
86
強迫型態轉換 要強迫變數轉換資料的型態可使用下列這種方式,在變數前面用括弧住要強迫轉換的型別,在括弧裡面可以包含tabs及空白鍵
87
允許強迫轉換型別的種類有下列幾種: (int), (integer):轉換成整數。 (bool), (boolean):轉換成布林值。
(float), (double), (real):轉換成浮點數。 (string):轉換成字串。 (array):轉換成陣列。 (object):轉換成物件。
88
轉換成物件 要將一個數量或字串的變數轉換成物件,變數的值會成為物件的屬性,此屬性的名稱會是'scalar'。
89
範例6-13:Ex6-13.php
90
圖6-13:轉換型別程式實例
91
6.4 PHP運算式/運算子/優先順序
92
PHP運算子 算數運算子(Arithmetic Operators) 字串運算子(String Operators)
指定運算子(Assignment Operators) 位元運算子(Bitwise Operators) 比較運算子(Comparison Operators) 條件運算子(Conditional Operator) 錯誤控制運算子(Error Control Operators) 執行運算子(Execution Operators) 遞增/遞減運算子(Incrementing/Decrementing Operators) 邏輯運算子(Logical Operators)
93
算數運算子 算數運算子有加, 減, 乘, 除 , 求餘數等運算。
94
表6-5 算數運算子
95
範例6-14:Ex6-14.php
96
圖6-14:算數運算子程式實例
97
遞增/遞減運算子(Incrementing/Decrementing Operators)
遞增運算子(++),$a++或++$a每次遞增加1。遞減運算子(--),$a-- 或--$a每次遞增減1。
98
表6-6遞增/遞減運算子
99
範例6-15:Ex6-15.php
100
圖6-15:遞增/遞減運算子程式實例
101
說明: $op2 = $op1++; : $op1(值=10)先傳回值給$op2(值=10)後,$op1(值=10)自己再加 1存回$op1(值=11)。 $op2 = ++$op1; : $op1(值=11)自己先加 1存回$op1(值=12) ,$op1(值=12)再傳回值給$op2(值=12)後。 $op2 = $op1--; : $op1(值=12)先傳回值給$op2(值=12)後,$op1(值=10)自己再減 1存回$op1(值=11)。 $op2 = --$op1; : $op1(值=11)自己先減 1存回$op1(值=10) ,$op1(值=10)再傳回值給$op2(值=10)後。
102
字串運算子(String Operators)
字串運算子只有一個,就是「.」,用來將字串連接起來,合併成為新字串。
103
範例6-16:Ex6-16.php
104
圖6-16:字串運算子程式實例
105
指定運算子(Assignment Operators)
106
表6-7:指定運算子
107
範例6-17:Ex6-17.php
108
圖6-17:指定運算子程式實例
109
位元運算子(Bitwise Operators)
位元運算子有AND 運算子(&)、OR 運算子(|)、Exclusive OR 運算子(^)、NOT 運算子(~)、位元左移運算子(<<)及位元右移運算子 (>>)。
110
表6-8:位元運算子
111
範例6-18:Ex6-18.php
112
圖6-18:位元運算子程式實例
113
比較運算子(Comparison Operators)
比較運算子有 ==,<,>,<=,>=,!=,<> 。
114
表6-9:比較運算子
115
範例6-19:Ex6-19.php
116
圖6-19:比較運算子程式實例
117
邏輯運算子(Logical Operators)
and, &&, or, ||, xor, ! 各代表邏輯布林運算的 AND, AND , OR , OR , XOR , NOT等運算。
118
表6-10:邏輯運算子
119
範例6-20:Ex6-20.php
120
圖6-20:邏輯運算子程式實例
121
條件運算子(Conditional Operator)
與許多程式語言一樣,PHP 也可以使用 A ? B : C 形式(A True 則 B 否則 C),其中的 A, B, C 是 expression 形式。
122
表6-11:條件運算子
123
範例6-21:Ex6-21.php
124
圖6-21:條件運算子程式實例
125
錯誤控制運算子(Error Control Operators)
PHP
126
範例6-22:Ex6-22.php
127
圖6-22:錯誤控制運算子程式實例
128
執行運算子(Execution Operators)
PHP 支援執行運算子backticks(``)(倒單引號,在鍵盤上「數字 1」的左側)的執行運算,在裡頭的字串將被視為 Dos command 來執行,而執行的輸出就是「值」,可以設定給其他變數。
129
範例6-23:Ex6-23.php
130
圖6-23:執行運算子程式實例
131
表6-12:運算子優先等級
132
6.5選擇性敘述
133
1.循序性結構: 由上而下的敘述方式,一行敘述執行完畢,再執行下一行。
134
選擇性結構: 根據判斷條件的成立與否,再決定要執行那一些敘述的結構。
135
重複性結構: 根據判斷條件的成立與否,決定程式段落回圈主體的執行次數的結構。
136
if敘述 在選擇性的結構中,使用的就是if 敘述
137
格式一:
138
格式二:
139
格式三:
140
範例6-24:Ex6-24.php
141
圖6-27:if敘述程式實例
142
搭配else敘述 加上 else 可以做「如果...則...否則...」的邏輯判斷,使用if…else…的敘述
143
格式一:
144
格式二:
145
範例6-25:Ex6-25.php
146
圖6-28:else敘述程式實例
147
再搭配elseif敘述 當程式的判斷需要不只一個條件時,則需要用到if…elseif…else敘述。
148
格式一:
149
格式二:
150
範例6-26:Ex6-26.php
151
圖6-29:elseif敘述程式實例
152
巢狀if敘述 巢狀if敘述就是if 敘述中再用另一個 if 敘述進行判斷。
153
格式一:
154
範例6-27:Ex6-27.php
155
圖6-30:巢狀if敘述程式實例
156
switch敘述 switch 是很好用的多條件判斷敘述,跟 if...elseif...elseif... 結構相同。
switch敘述的運作方式:當case的值和switch 的值相同時,則case以下的所有的敘述就會被執行,除非在方塊裏遇到break,執行才會被中斷。
157
圖6-31:switch敘述流程圖
158
格式:
159
範例6-28:Ex6-28.php
160
圖6-32:switch程式實例
161
6.6 重複性敘述
162
while while 是一種迴圈的敘述,while 先判斷判斷式的成立與否,如果判斷式為 true,則執行 while 裡的敘述,否則(flase)離開while迴圈。
163
格式:
164
範例6-29:Ex6-29.php
165
圖6-33:while程式實例
166
do...while 敘述 do...while 敘述也是迴圈敘述,但是 do...while敘述 與 while 敘述不同的地方在於,do...while敘述會先執行 do 裡的敘述一次後才去判斷判斷式是否成立。
167
格式:
168
範例6-30:Ex6-30.php
169
圖6-34:do..while程式實例
170
for敘述 for 迴圈敘述是一種有條件式的迴圈語法,for 可以指定迴圈開始與結束和遞增的條件,因此可以限定迴圈的次數。
171
格式:
172
範例6-31:Ex6-31.php
173
圖6-35:for程式實例
174
break指令 break 指令用來跳出目前的迴圈,通常是用在利用 if 敘述判斷到某個符合的條件,而必須馬上跳出迴圈時才使用。
175
範例6-32:Ex6-32.php
176
圖6-36:break程式實例
177
continue 指令 continue 與 break 是相對的指令。break 中斷目前執行的迴圈,continue 則是回到迴圈的開頭,continue後面的敘述則不執行,重新執行迴圈。
178
範例6-33:Ex6-33.php
179
圖6-37:continue程式實例
180
巢狀迴圈 就像其他所有的程式語言一樣,PHP的巢狀迴圈是一個迴圈可在另一個迴圈之內,通常搭配多維陣列來執行。
181
格式:
182
範例6-34:Ex6-34.php
183
圖6-38:巢狀迴圈程式實例
184
本章結束 謝謝!!
Similar presentations