380 likes | 553 Views
PHP 基本語法. 一般程式語言範圍與內容. 變數 型態:數值、字串、布林 運算 算數運算: +, -, *, / 比較運算: >, <, ==, >=, <=, != 布林運算: &&, ||, ! 選擇結構 if … else switch … case 重覆結構 for while foreach 陣列 副程式. 資料型別與變數. PHP 與 C/C++ 、 Java 不同,使用變數不必先宣告變數型別。 PHP 變數名稱均以 $ 開頭,再接變數名稱。 變數名稱第 1 個字必須是英文字母或底線符號 _ ,之後則可使用任何文數字。
E N D
一般程式語言範圍與內容 • 變數 • 型態:數值、字串、布林 • 運算 • 算數運算:+, -, *, / • 比較運算:>, <, ==, >=, <=, != • 布林運算:&&, ||, ! • 選擇結構 • if … else • switch … case • 重覆結構 • for • while • foreach • 陣列 • 副程式
資料型別與變數 • PHP與C/C++、Java不同,使用變數不必先宣告變數型別。 • PHP變數名稱均以$開頭,再接變數名稱。 • 變數名稱第 1 個字必須是英文字母或底線符號 _,之後則可使用任何文數字。 • 特別注意:變數名稱在 PHP 中有區分大小寫,但PHP 指令則不分大小寫。 • echo 也可寫成 ECHO, 功能都相同 • $var和 $VAR 是兩個不同的變數
資料型別 • PHP 的變數可存放下列幾種類型的資料: • 布林值 (boolean) • 整數 (integer) • 浮點數 (float, floating-point) • 字串 (string) • 陣列 (array) • 物件 (object) • 資源 (resource) • 空值 (null)
PHP 的字串表示法 • 字串可使用下列表示法: • 單引號 ('):一般性字串。 • 雙引號 (“):可直接解譯字串中的變數值。 • heredoc:適用於多行的字串(不常用)。 • 反斜線(\)稱為跳脫序列(Escape Sequence),可用來表示特殊符號,如’, “, \, $等。
單引號與雙引號比較 <?php $str = “我有”; $money = 100; echo “$str $money 元<br/>”; //雙引號 echo ‘$str $money 元<br/>’; //單引號 ?> • 執行結果: • 我有 100 元 • $str $money 元
常數(Constant) • 特點是『定義之後,其值不能變更』。 • 功能: • 避免不小心改到不應更改的變數值 • 用文字代替特定的資料或數值,讓程式具可讀性。 • 定義常數語法 • 命名規則和變數類似 • 不以 $ 符號為開頭 • 習慣上都會全部使用大寫英文來命名。 • 語法:define(‘NAME’, Value) • NAME:常數名稱 • Value:常數值 • 範例 define(‘PI’, 3.1415926); echo ‘半徑 4 的圓<br/>其面積為:’; echo PI *4*4; echo ‘周長為:’; echo 2*PI*4;
運算功能 • 算術運算 • 遞增 / 遞減運算
運算功能 • 字串串連 $str = ‘程式’; echo ‘PHP ‘ . $str . ‘設計’; //結果為『PHP程式設計』 • 比較運算
運算功能 • 邏輯運算
運算功能 • 邏輯運算真值表
== 和 === 以及 != 和 !== 的不同 • PHP運作時,會自動做資料型別轉換 $str = ‘100’; $money = ‘99 dollars’; echo 23 + $str; //結果:123 (23+100) echo $money -23; //結果:76 (99-23) • 使用 ==、!= 運算子時,PHP 也會自動轉換運算元的資料型別,以進行比較 $num = 100; //整數 $str = ‘100’; //字串 $str == $num; //True, 因型態自動轉換後,兩者都是100 $str === $num; //False, 因型態不同
邏輯運算中的型別轉換 • 各資料型別的變數會依如下的原則進行轉換: • 就整數、浮點數而言, 當其值為 0 即會視為 false、其它數值都算是 true。 • 當字串為 '0'、空字串 (沒有內容的字串 ''), 即會被視為 false;其它字串都算是 true。 • NULL、空陣列一律都是 false;有含元素的陣列則為 true。
運算子與運算式 • 運算子優先順序 • 當一個運算式內有多個運算時, 會依照優先順序來決定運算的先後。(不同語言可能會有不同順序,不要過份倚賴,應以括號標示其優先順序)
4 - 5 流程控制 • 條件控制 • If / else • if / elseif / else • switch • 迴圈 • while • for • break 與 continue • foreach
條件控制 • 語法: if(條件運算式){ //條件運算式為true時,所執行的程式碼 } else{ //條件運算式為false時,所執行的程式碼 } • else 的部份, 若不需要可省略。 • 範例 if( $temp > 25){ echo ‘穿短袖’; } else{ echo ‘穿長袖’; }
條件控制 • if / elseif / else: • 範例: if(score>=90) echo 'A'; //90分以上為A elseif(score>=80) echo 'B'; //80分以上為B elseif(score>=70) echo 'C'; //70分以上為C elseif(score>=60) echo 'D'; //60分以上為D else echo 'E'; //60分以下為E
實戰演練 - 陽春登入及歡迎網頁 會員名稱: 密碼: 登入 登入成功 登入失敗
條件控制─Switch • 範例: $season = '春'; switch ($season) { case '春': echo '穿長袖'; break; case '夏': echo '穿短袖'; break; case '秋': echo '穿長袖'; break; case '冬': echo '穿長袖+外套'; break; default: echo '不合理的季節'; break; } • 練習:輸入西元年月,輸出是否為潤年與季節(春夏秋冬)
實戰演練 - 加減計算機 • 檢查文字框內容是否為空值,PS: 使用isset()判斷。 = 計算 3*5=15
迴圈─for • 語法: for(初始運算式; 條件運算式; 控制運算式){ //迴圈中要重覆執行的程式碼 } • 初始運算式只有第 1 次進入 for 迴圈之前會被執行 • 條件運算式則和 while 一樣, 是用以判斷是否要繼續執行大括號的內容。 • 控制運算式則是每一輪迴圈執行結束後都會執行的。 • 練習:輸入兩數a,b,計自a+…+b=?
迴圈─while • 語法: while(條件運算式){ //迴圈中要重覆執行的程式碼 } • 當條件運算式為 true 時, 就會重複執行大括號中的程式碼。 • 練習:輸入兩數,計算最大公因數
迴圈─do …. while • 與while類似,但適用於迴圈『至少要執行一次』的情況, 其語法如下。 do{ //迴圈中要重覆執行的程式碼 } while(條件運算式);
迴圈─break, continue • break:會跳出迴圈 for($i=1; $i<=5; $i++){ if($i==3) //當$i為3時,跳出迴圈 break; //結果:1, 2 } • continue:則跳到下一輪的迴圈。 for($i=1; $i<=5; $i++){ if($i==3) //當$i為3時,跳到迴圈的下一輪 continue;//結果:1, 2, 4, 5 }
陣列 $student[1] $student[0][1] $student[1][1] $student[3] $student[0][3] $student[1][3] $student[0] $student[0][0] $student[1][0] $student[2] $student[0][2] $student[1][2] $student一維陣列 $student二維陣列
一維陣列 • 建立陣列的語法如下: $var[index]=value • $var: 變數名稱 • index: 索引值可以是數字或字串索引 • value: 值 • 如果未指定索引值,會自動從 0 開始,後面的元素索引會自動接著前一個元素索引編號。 • 若要指定索引編號, 亦可不按順序指定。 $student[] = 100; //相當於 $student[0] = 100 $student[] = 90; //相當於 $student[1] = 90 $student[7] = 70; //不必依照順序 $student[‘Mary’] = 100; $student[‘John’] = 99;
以 array() 函式建立一維陣列 語法: $arr = array( index1 => value1, index2 => value2, … ); • $arr: 變數名稱 • index: 索引值可以是數字或字串索引 • value: 值 範例: $week = array(‘Sunday', ‘Monday', ‘Tuesday‘, ‘Wednesday‘, ‘Thursday‘, ‘Friday‘, ‘Saturday‘ );
練習 • 作兩個陣列:(‘Sunday’, ‘Monday’, ‘Tuesday‘, ‘Wednesday‘, ‘Thursday‘, ‘Friday‘, ‘Saturday‘)與(‘星期日’, ‘星期一’, ‘星期二‘, ‘星期三‘, ‘星期四‘, ‘星期五‘, ‘星期六‘),顯示如下: Sunday 星期日 Monday 星期一 Tuesday 星期二 Wednesday 星期三 Thursday 星期四 Friday 星期五 Saturday 星期六 • 如果以一個陣列該如何作呢?
二維陣列與多維陣列 • 二維以上陣列其實可以看成多個一維陣列的組合。 … … … … … … …
二維陣列建立 – 使用兩層 array() • 範例: $student = array( '1099137101' => array( 'chi' => 90, 'math' => 80, 'eng' => 70 ), '1099137102' => array( 'chi' => 90, 'math' => 80, 'eng' => 70 ), '1099137103' => array( 'chi' => 90, 'math' => 80, 'eng' => 70 ), ); • 先建立好一維陣列, 然後再放進另一個陣列中 • 範例: $score = array( 'chi' => 90, 'math' => 80, 'eng' => 70 ); $student[0] = $score; • 語法: $arr = array( index1 => array( key1 => value1, key2 => value2, … ), index2 => array( key1 => value1, key2 => value2, … ), … );
多維陣列 • 三維、四維...等多維陣列的建立方法與二維陣列類似。 • 例如: • 3 年 2 班 1 號同學的三維陣列名稱就是 $student[3][2][1] • 6 年 4 班 2 號同學的數學成績的四維陣列名稱可以是 $student[6][4][2][‘math’]
迴圈─foreach • 當需對陣列中每一個元素進行處理時,foreach迴圈更方便。 • 語法一(無索引值): foreach($arras $value){ //迴圈中要重覆執行的程式碼 } • $arr: 要處理的陣列 • $value: 自訂的變數名稱 • foreach會依序從 $arr陣列中取得各元素值, 然後放在 $value 變數中。
迴圈─foreach – 範例 $week = array(‘Sunday', ‘Monday', ‘Tuesday‘, ‘Wensday‘, ‘Thursday‘, ‘Friday‘, ‘Saturday‘, ); foreach($week as $value){ echo $value; }
for與foreach的比較 • 承上題,若改用 for 迴圈 $length = count($week); for($i=0; $i<$length; $i++){ echo “$week[$i] <br/>”; } • for 迴圈必須先取得陣列長度來定義迴圈,因為PHP的陣列允許字串索引,也允許不連續儲存,使用上不若 foreach迴圈方便易用。
迴圈─foreach • 語法二(需同時用到元素索引和元素值): foreach($arr as $key => $value){ //迴圈中要重覆執行的程式碼 } • $arr: 要處理的陣列 • $key: 每次陣列元素中的索引值 • $value:每次陣列元素中的元素值 • 範例:有一以學號為索引的分數陣列,今欲輸出每個人的姓名和分數: $student = array( '1099137101' => 90, '1099137102' => 85, '1099137103' => 75 ); foreach($student as $id => $score){ echo $id . ‘考了‘ . $score . ‘分’; }
取得表單中複選欄位的資料 • 『可以複選』的欄位,如<select multiple...>,名稱相同的多選鈕 (<input type = “checkbox”..>)等 • 若名稱相同,讀取 $_GET[‘learning’] 時,只能取得最後一個值。 (後面資料會覆蓋前面資料)
取得表單中複選欄位的資料 <select name=“learning[]” size=“3” multiple> <option>JSP</option> <option>PHP</option> … </select> • 或是 <input type=“checkbox” name=“learning[]” value=“JSP” /> <input type=“checkbox” name=“learning[]” value=“PHP” /> • 如此送出的表單資料, PHP取行資料如下(假設使用$_GET 陣列) • $_GET[‘learning’][0] = “JSP”; • $_GET[‘learning’][1] = “PHP”; • 若使用foreach,該如何作呢?
練習 - 飲料訂購單 數量 飲料名稱 價格 淳品奶茶 30 微笑奶茶 35 珍珠奶茶 40 計算 親愛的顧客,你點的是 淳品奶茶1杯 微笑奶茶3杯 珍珠奶茶2杯 總共6杯,共計215元