資料庫程式設計 – PHP+MySQL 第 四 章 PHP 語言  上一頁      下一頁

 

4-4 PHP 陣列

內容:

  • 4-4-1 PHP 陣列敘述

  • 4-4-2 範例研討:計算單筆成績

  • 4-4-3 範例研討:列印班級成績單

  • 4-4-4 自我挑戰:顯示及格成績單

  • 4-4-5 範例研討:列印月曆

  • 4-4-6 PHP 陣列迴圈 - foreach

4-4-1 PHP 陣列相關敘述

(A) 一維陣列宣告

一維陣列的宣告語法如下:

$name[] = “張大名”;   //name[0] 內容是張大名

$name[] = “劉友德”;   //name[1] 內容是劉友德

$data = array(90, 80, 40);  //data[0]=90data[1]=80data[2]=40

(B) 二維陣列宣告

二維陣列的語法如下:

$score = array(

             array(80, 90, 70, 78, 97),

             array(90, 56, 89, 76, 99),

             array(89, 76, 78, 72, 91));

$score1 = array(80, 90, 70, 78, 97);

$score2 = array(90, 56, 89, 76, 99);

$score3 = array(89, 76, 78, 72, 91);

$score = array($score1, $score2, $score3);

(C) 陣列迴圈

PHP 有專屬處理迴圈敘述句:foreach,其語法如下:

$score = array(80, 90, 70, 78, 97);       //一維陣列範例

$sum = 0;

foreach($score as $element){

      $sum = $sum +$ element;    //sum = 80+90+70+78+97

}

4-4-2 範例研討:計算單筆成績

(A) 網頁功能 – Ex4_11.php 

我們用一個陣列 $score = array(78, 98, 84, 72, 90) 存放學生的資料,順序是:程式、計概、網頁、資料庫、系統分析。請製作一網頁可顯示各科成績,以及平均分數,格式如下:

 (B) 製作技巧

我們利用 $sum 變數作為累加器,累加各科成績,再除以 5 就是平均分數。

(C) 程式範例

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

    $score = array(78, 98, 84, 72, 90);

       $sum = 0;

       echo "各科成績:\t";

       foreach($score as $item){

           $sum = $sum +$item;

           echo "$item \t";    

       }

       echo "<BR>";

       $ave = $sum / 5;

       echo "平均分數 = $ave";

?>

4-4-3 範例研討:列印班級成績單

(A) 網頁功能 – Ex4_12.php 

張老師希望有一套工具可以列印全班同學各科成績,以及其平均分數,格式如下圖,請您幫她設計出來,並使它可以顯示在網頁上。

 (B)製作技巧

吾人將這張圖歸納如下:

(1) 5 位同學,每筆資料內記錄學號、程式設計、計算機概論、資料庫、系統分析等資料。因此需要一個 5 * 6 的二維陣列來存放。我們用 $score1 ~$score5 5 個一維陣列,分別存放每位學生的資料。再將這 5 個陣列結合成一個二維陣列,並命名為 score

(2) 利用一個陣列存放表格的欄位名稱,命名為 name

(3) 表格需要 6 行、每行 7 個欄位,前 6 個欄位是存放每位同學的學號與各科成績,最後欄位是平均分數。利用 PHP 繪製表格,填入資料時,順便計算它的平均值,將它填入最後欄位。

(C) 程式範例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<?php

       // 一維陣列宣告

       $name = array("  ", "程式設計", "計算機概論", "網頁設計", "資料庫", "系統分析");

    $score1 = array(9021131, 78, 98, 84, 72, 90);

    $score2 = array(9021132, 88, 90, 80, 69, 92);

    $score3 = array(9021133, 79, 92, 74, 81, 88);

    $score4 = array(9021134, 90, 78, 64, 94, 76);

    $score5 = array(9021135, 60, 68, 72, 76, 69);

       // 二維陣列宣告

       $score = array($score1,$score2,$score3,$score4,$score5);

    // 宣告表格寬度與線條大小

       echo "<table width='500' border='1'>";

       // 產生表格標題

       echo"<tr>";

       for($i=0; $i<6; $i++){

           echo "<td align='center'>$name[$i]</td>";

      }

       echo "<td> 平均分數</td>";

       echo "</tr>";

       // 產生表格內容

       for($i=0; $i<5; $i++) {

           echo "<tr>";

           $sum = 0;

           $item = $score[$i][0];

           echo "<td> $item </td>";

            for($j=1; $j<=5; $j++){

               $sum = $sum +$score[$i][$j];

               $item = $score[$i][$j];

             echo "<td> $item </td>";

           }

           $ave = $sum/5;

           echo "<td>$ave</td>";

           echo "</tr>";

       }

       // 表格結束

       echo "</table>";

?>

4-4-4 自我挑戰:顯示及格成績單

(A) 網頁功能 – Ex4_13.php 

張老師對 Ex4_12 的成績單並不滿意,希望成績不及格(低於 60 )能夠顯示紅色數字,這樣對學生比較有警惕的功能,期望如下圖這樣。

 (B) 製作技巧

很簡單,我們修改 Ex4_12.php 程式,將各項成績填入欄位之前,先判斷其內容是否低於 60,如是的話,則將字型顏色設定為 red (紅色)

(C) 程式提示

1

2

3

4

5

6

7

8

9

       ……..

       $item = $score[$i][$j];

               $sum = $sum +$item;

               if ($item >=60)

                   echo "<td> $item </td>";

                else               //成績不及格顯示紅色

                     echo"<td><font color='red'>$item</font></td>";

           }

……

4-4-5 範例研討:列印月曆

(A)網頁功能 – Ex4_14.php 

我們期望在網頁上顯示月曆,先做一個起頭的練習,假設該月的第一天是星期三,而那個月有 31 天,期望印出來如下圖所示。

 (B)製作技巧

吾人將列印的關鍵性技巧歸納如下:

(1) 排列方式:它是新型格式,由星期一排到星期日。

(2) 當月的第一天:如果是星期三,則用 3 來取代,第一行須先入 2 (3-1)空白欄位,第 3 欄位才由 1 開始排。

(3) 每次排 7 個欄位後須再開下一行(<tr>)

(4) 所有日期(假設 31 )排列完後,看排到星期幾(假設星期五,5),則需在排兩個空白欄位。

(C)程式範例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<?php

   echo "<p> 假設當月第一天是星期三,該月有 31 </p>";

   $week = array("星期一","星期二","星期三","星期四",

                     "星期五","星期六","星期日");

   $first=3;         // 第一天是星期三

       $number=31;     // 這個月有 31

 

   echo "<table width='400' border='1'>";

       echo "<tr>";

       for($i=0; $i<7; $i++){             // 列印星期一 ~

           echo "<td align='center'>$week[$i]</td>";

      }

       echo "</tr>";

       echo "<tr>";

       $now = 0;                   // 目前印到星期幾

          for($i=1; $i<$first; $i++){      // 列印第一週前面空白

            echo "<td>   </td>";

            $now = $now + 1;            //目前印到星期幾

        }

       $day = 1;

       while ($day <= 31) {                // 1 日開始輸出

            echo "<td> $day </td>";

             $now = $now + 1;

            if (($now % 7) == 0){          // 是否已到星期日

                echo "</tr>";         // 如果是這行結束再開新行

                       echo "<tr>";

                $now = 0;          //又歸 0 開始計算

        }

            $day = $day + 1;

    }                              // 所有日數填寫完

    while ($now <7){            //印到星期幾,後面印空格

        echo "<td>    </td>";

        $now = $now + 1;

   }

  echo "</tr>";

  echo "</table>";

?>

4-4-6 PHP 陣列迴圈 –foreach

(A) foreach 迴圈語法

PHP 陣列宣告時,並非陣列元素一定是 0, 1, 2, 3,4, ...,整數排列,陣列元素單元可以任意取名或任意數值排列,如此的話,一般程式語言內的 forwhiledo-while 迴圈便無法執行,因此有一專屬迴圈 - foreach,範例如下:

1

2

3

4

5

6

7

8

9

<?php

$arr = array(41, 2, 3, 17);

foreach ($arr as $value) {

echo "$value <BR>";

}

foreach ($arr as $key => $value) {

each "arr[$key] = $value <BR>";

}

?>

語法說明

1.        3 行:foreach($arr as $value) {...}。迴圈自動由陣列 $arr 的第 0 元素取到最後元素的內容 $value

2.        6 行:foreach($arr as $key => $value) { ...}。迴圈自動陣列的 $arr[$key] 元素取出內容 $value,到最後元素。

(B) PHP 指定元素宣告

PHP 陣列元素可以任意,如下:

arr['sunday'] = '星期日'arr['monday'] = '星期一'arr['tueday'] = '星期二'、、、。

宣告語法如下:

$arr = array('sunday' => '星期日',  'monday' => '星期一', 'tueday' => '星期二', ...);

(C) 程式範例:Ex4-14-1.php

1

2

3

4

5

6

7

8

9

<?php

       $arr = array ('sunday'=>'星期日', 'monday'=>'星期一',

                  'tuesday'=>'星期二', 'wednesday'=>'星期三',

                      'thursday'=>'星期四','friday'=>'星期五',

                        'saturday'=>'星期六');

       foreach ($arr as $key => $value) {

                       echo "$key is $value <BR>";

       }

?>

執行結果:

翻轉工作室:粘添壽

course_db 關聯圖

 

資料庫程式設計:

 

 

 

翻轉電子書系列: