溫瑞烘老師的教學歷程檔案(Teaching ePortfolio) - 105-1-物件導向程式設計-資管二乙 - 第1週-PHP程式語言
 

資訊管理系
副教授
温瑞烘


歷程檔案 Portfolio


關於我 About Me

第1週-PHP程式語言

 

PHP的資料型態

本文引自http://pydoing.blogspot.tw/2012/10/php-tutorial.html

PHP 的重要資料型態

布林 (boolean)

整數 (integer)

浮點數 (floating point number)

字串 (string)

陣列 (array)

NULL

基本上程式 (program) 會自動判斷變數 (variable) 的資料型態 (data type) PHP 的變數寫法就比較特別一點,用金錢符號 $ 開頭,

其後可接英文字母,如下 $b 為布林型態, $i 為整數型態, $f 為浮點數型態, $s 為字串型態

$b = True; // 布林型態

$i = 1234; // 整數型態

$f = 12.3; // 浮點數型態

$s = "12"; // 字串型態 也可以使用單引號 '12'

布林型態只有兩種常數 True False ,整數是不含小數點的數字,浮點數則是包含小數點的數字,字串為雙引號圍起來的任意字元。

陣列就比較複雜一點,因為陣列分成兩部份,第一部分為索引,第二部份則是資料,兩者可以是上面四者型態任一,例如

 $a1 = array(10, 20, 30, 40); 

建立陣列需要用到內建函數(function) array(),索引與資料放在參數列 (parameter list) ,若無提供索引,如 $a1 ,索引會自動由 0 遞增填補,因此存取 $a1 如下

echo $a1[0];     // 顯示10、注意:位置由0開始

echo $a1[1];     // 顯示20

echo $a1[2];     // 顯示30

echo $a1[3];     // 顯示40

陣列變數後面緊接中括號,中括號裡面則放索引值。

當然,如果有提供索引,存取陣列的元素就得依據索引值

echo $a2[1];         // 顯示100

echo $a2["A"];       // 顯示33.06

echo $a2["1"];       // 顯示Tony

PHP的變數命名規則

 

PHP 的變數 (variable) 由金錢符號 $ 開頭,其後可接底線、英文大小寫字母或數字,但數字不可以接在金錢符號之後,下面這些都是合法的變數名稱:

$variable_name;

$_code; $CODE;

$_1234;

$a1234;

$some;

$Some;

須注意一點,英文大寫與小寫對變數名稱來說是不一樣的,因此 $some $Some 是兩個不同的變數

有沒有發現每一行程式都要以分號結尾,若是漏打分號的話,程式就無法執行。分號代表什麼意思呢?有分號結尾的程式碼,在 PHP 稱之為陳述 (statement)

簡單的陳述可由運算式 (expression) 組成,接下來我們來看看運算式與陳述吧!

PHP的運算式與陳述

運算式 (expression) 由運算元 (operand) 與運算子 (operator) 所組成,依運算元的數量,運算式可以簡單分為下列三種:單一個運算元,兩個運算元,三個運算元。

單一運算元就構成一個運算式,運算元可以是變數(variable) 、常數(literal)、或呼叫函數 (function) ,例如

$a;          // 以變數當運算元

3;           // 以常數當運算元

echo "\n";  // 使用關鍵字

運算式,顧名思義,其為運算出一個結果的式子,因此單一運算元的運算式所得到的結果就是運算元的值,如果是函數方法呼叫,就是函數的回傳值 (return value)。單一運算元也可以結合單元運算子,單元運算子有

運算子

功能

範例

+

+$a

-

-$a

++

遞增

++$a, $a++

--

遞減

--$a, $a--

!

邏輯補數運算子

!$a

 

正負如同一般數學表示正負值一樣,同樣的,負負會得正

$a = -3; $b = +$a; // $b 會等於 -3 $c = -$a; // $c 會等於 3

遞增、遞減則是會將整數變數遞增 1 或遞減 1 ,有前後之別

$a = 3; $b = ++$a; // $b 會等於 4

$c = $a++;         // $c 會等於 4

$d = --$a;         // $d 會等於 4

$e = $a--;         // $e 會等於 4

 

邏輯補數運算子會把 True 變成 False False 變成 True

$a = True; $b = !$a; // $b 會等於 False

$c = !$b;            // $c 會等於 True

一般運算子都須結合兩個運算元,例如算術運算子 (arithmetic operator) ,可用在整數 (integer) 及浮點數 (floating-point number) ,計算結果也為整數或浮點數

運算子

功能

範例

+

$a + $b

-

$a - $b

*

$a * $b

/

$a / $b

%

取餘數

$a % $b

例如

$a = 11; $b = $a + 33; // $b 會等於 44

$c = $b - 22;          // $c 會等於 22

$d = $c * 11;          // $d 會等於 242

$e = $d / 44;          // $e 會等於 5.5

$f = $e % 55;          // $f 會等於 5

相等性及關係運算子 (equality and relational operator) ,可用於整數及浮點數或布林值 (Boolean value) ,計算結果不是 True 就是 False

運算子

功能

範例

==

相等

$a == $b

!=

不相等

$a != $b

大於

$a >= $b

>=

大於等於

$a >= $b

小於

$a < $b

<=

小於等於

$a <= $b

 

例如

$a = 11; $b = 22; $c = $a >= $b; // $c 會等於 False

$d = $a <= $b;                   // $d 會等於 True

$e = $c == $d;                   // $e 會等於 False

$f = $a != $b;                   // $f 會等於 True

我們運用的等號,其實屬於指派運算子 (assignment operator) ,所謂的指派是把等號右邊的值給左邊的變數

運算子

功能

範例

=

指派

$a = $b

+=

相加同時指派

$a += $b ($a = $a + $b)

-=

相減同時指派

$a -= $b ($a = $a - $b)

*=

相乘同時指派

$a *= $b ($a = $a * $b)

/=

相除同時指派

$a /= $b ($a = $a / $b)

%=

取餘數同時指派

$a %= $b ($a = $a % $b)

例如

$a = 11;

$a += 33;          // $a 會等於 44

$a -= 22;          // $a 會等於 22

$a *= 11;          // $a 會等於 242

$a /= 44;          // $a 會等於 5.5

$a %= 55;          // $a 會等於 5

PHP 選擇敘述與迴圈

本文引自http://pydoing.blogspot.tw/2012/10/php-tutorial.html

 

程式中的選擇 (selection) 就是依條件 (condition) 使程式有不同的執行方向,
若條件為真,也就是 True ,程式就會跳過 False 的部份執行 True 的部份,反之亦然。
選擇結構有單一選擇跟多重選擇,兩者都可使用 if 陳述 (if statement)  if 為關鍵字 (keyword) 之一,
若是多重選擇 if 須與 else 連用。單一選擇,也就是單獨使用 if 陳述如下:

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

以上條件為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後的大括弧的程式區塊 (block) 
如果 3 大於 5 為假,程式自然跳過條件後的程式區塊,去找區塊後的第一個陳述 (statement) 執行。

 

if  else 連用,條件為真,執行 if 後的程式區塊,條件為假,就執行 else 後的程式區塊

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

else {

  echo "還好,3沒有大於5";

}

 

if-else 也可以多個連用,形成 if-else if-else 的多重選擇,最後的 else 表示以上皆非

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

else if (4 > 5) {

  echo "喔,4大於5發生了!";

}

else if (5 > 5) {

  echo "喔,5大於5發生了!";

}

else if (6 > 5) {

  echo "6當然大於5哩!";

}

else {

  echo "以上沒有符合的條件 :(";

}

 

範例程式一

<?php

if (3 > 5) {

    echo "喔,3大於5發生了!";

}

else if (4 > 5) {

    echo "喔,4大於5發生了!";

}

else if (5 > 5) {

    echo "喔,5大於5發生了!";

}

else if (6 > 5) {

    echo "6當然大於5哩!";

}

else {

    echo "以上沒有符合的條件";

}

?>

 

if-else if-else 多重選擇的缺點是需要很多個條件,程式需要做很多個條件判斷,
因此另外有個switch 陳述 (switch statement) ,條件為一個常數 (constant) 值,
然後程式自動尋找符合的case 。同樣的 switch  case 也都是關鍵字

switch (6) {

  case 3:

    echo "選擇是3...";

    break;  

  case 4:

    echo "選擇是4...";

    break; 

  case 5:

    echo "選擇是3...";

    break;     

  case 6:

    echo "選擇是6...";

    break; 

  default:

    echo "以上沒有符合的條件";

}

 

這裡, switch 後面的小括弧必須是常數值,此例中直接使用字面常數,也可以使用有常數值的變數(variable) 
case 後空一格,然後也是接常數值,通常就是直接填入符合情況的常數,注意,
每個case 的常數後都要接冒號。case 底下的陳述,習慣上沒有用大括弧,而是用縮排 (indentation) 
的方式表示屬於哪個 case 的工作。每個 case 最後,我們都有加上 break 陳述 (break statement)
這是中斷跳出執行的意思,就是說,這個 case 符合並且執行了 case 所屬的工作,到此跳出switch-case 的範圍,
程式繼續執行switch 大括弧後的陳述。switch-case 最下面有個 default default 就是預設情況,
如果以上皆非就會執行 default 的工作,這跟 if-else if-else 最後的else 的用法相同。
但是,如果 case 後沒有 break ,每一次執行 default 都會被執行。同樣的,break  default 也都是關鍵字之一。
我們將此例寫成完整的範例程式,如下

 

範例程式二

<?php

  switch (6) {

    case 3:

      echo "選擇是3...";

      break;     

    case 4:

      echo "選擇是4...";

      break;

    case 5:

      echo "選擇是3...";

      break;     

    case 6:

      echo "選擇是6...";

      break; 

    default:

      echo "以上沒有符合的條件";

  }

?>

 

程式 (program) 中的迴圈 (loop) 就是在特定程式區塊 (block) 中,重複執行相同的工作。
PHP 中四種迴圈,分別是 while 迴圈 (while loop)  do-while 迴圈 (do-while loop)  
for 
迴圈(for loop)  foreach-as 迴圈 (foreach loop) 。我們先來看看 while 迴圈的寫法

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

  echo $i . "<br>";     

  $i--; // 調整控制變數值

}

這個迴圈所進行的工作很簡單,先在命令列上印出 10 ,然後一路倒數到 1 為止。迴圈有三個地方要注意

1.  設定控制變數

2.  條件

3.  調整控制變數值

 

while 迴圈的控制變數 (control variable) 必須在 while 之前就先設定好,此例中將控制變數 $i設定為 10 
然後進入 while 的地方,條件 (condition) 就在 while 之後的小括弧中,此例中為當控制變數 $i 大於 0 時,
迴圈便會重複執行。迴圈工作區,也就是 while 底下用大括弧圍住的程式區塊,
這裡,我們只有簡單的印出控制變數 $i 的值,迴圈工作區的最後需要有調整控制變數值的地方。
我們先寫成完整的範例,來執行看看結果吧!

範例程式三

<?php

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

echo $i . "<br>";     

$i--; // 調整控制變數值


?>

 

當我們明確知道重複次數的時候,我們得利用控制變數來記錄 while 迴圈所進行次數,
這樣 while迴圈才會有結束的一天,不然若是三個與控制變數相關的部份,漏了任一部份時,
就有可能導致無窮迴圈 (infinite loop) 的發生,例如

 

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

echo $i . "<br>";     

// 沒有調整控制變數值

}

 

這樣一來,控制變數 $i 永遠大於 0 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 10
直到強制結束程式的執行為止。

 

do-while 迴圈可視為 while 迴圈的顛倒,先 do 才做 while 的條件測試。

範例程式四

<?php

$i = 1; // 設定控制變數

do { // 迴圈工作區

echo $i . "<br>";     

$i++;         // 調整控制變數值

} while ($i < 11);       

?>

 

另外一個 for 迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在小括弧之中,如下

for ($i = 10; $i > 0; $i--) {    

echo $i . "<br>";

}

 

for 之後的小括弧用兩個分號區隔三個項目,依序是控制變數的設定、迴圈結束條件、控制變數的調整。
這個 for 迴圈與上面的 while 迴圈功能完全相同,寫成完整的範例程式,如下

範例程式五

<?php

  for ($i = 10; $i > 0; $i--) {   

    echo $i . "<br>";

  }

?>

範例 : 1+2+3+....+1000的總和

  1. 以記事本 Notepad編輯原始程式
   

      <?php
         $sum=0; -- 總和變數歸零
         for ($i=1; $i<=1000; $i++)
           $sum=$sum+$i;
         }
         echo "1+2+...+1000=$sum";
      ?>
 
   2. 儲存至 C:/AppServ/www/1.php

   3. 執行方法
      開啟 Chrome或 IE  
      在網址獵輸入 http://127.0.0.1/1.php

練習:寫一PHP程式,產生100個介於1100的亂數

  計算偶數和、奇數和、總和、平均、最大值、最小值

   產生亂數可以使用迴圈 100 次並呼叫函數rand(1,1000)

   for ($i=1; $i<=100; $i++) 
      $data=rand(1,1000);


   }


將程式發佈在個人ePortfolio

 

 

全部共 0則留言
登入帳號密碼代表遵守學術網路規範
 


文章分類 Labels

 


最新文章 Top10

中華科技大學數位化學習歷程 - 意見反應