[PHP] 利用 for 廻圈製作九九乘法表、學生成績表

1)九九乘法表
關鍵在於為兩個乘數建立變數 a 和 b
為了排版清楚 運用TABLE的HTML分隔

解答如下:

1
2
3
4
5
6
7
8
9
10
11
<?php
        echo '<table border="1" cellspacing="1">';
        for($a = 2;  $a < 10; $a++){
                echo '<tr>';
                for($b = 2; $b < 10; $b++){
                        $c = $a*$b;
                        echo '<td>' . $a . 'X' . $b . '=' . $c . '</td>';
                }
                echo '</tr>';
        }
?>

2)學生成績表
表格中含有以下資料:學生姓名、科目名稱、科目成績
例如 要列出 John, Mary , Ben, Cody 四位學生的國語、數學、英語成績
關鍵在於建立 二維陣列,以及嵌套廻圈。

解答如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
        $arrName = array( 0 => 'John', 1 => 'Mary', 2 => 'Ben' , 3 => 'Cody');
        $arrScore[] = array(0 => 79, 1 => 73, 2 => 80);                //第1個學生的三科成績
        $arrScore[] = array(0 => 83, 1 => 65, 2 => 91);                //第2個學生的三科成績
        $arrScore[] = array(0 => 66, 1 => 78, 2 => 84);                //第3個學生的三科成績
        $arrScore[] = array(0 => 90, 1 => 93, 2 => 95);                //第4個學生的三科成績
        // 開始印出表格
        echo '<table border="1"><tr><td>姓名</td><td>國語</td><td>數學</td><td>英語</td></tr>';
        $sum = count($arrName);        //取得學生總數
        for($i=0; $i<$sum; $i++){
                        echo '<tr><td>' . $arrName[$i] . '</td>';
                        for($a=0; $a<3; $a++){
                                echo '<td>' . $arrScore[$i][$a] . '</td>';
                        }
                        echo '</tr>';
        }
        echo '</table>';    
?>

使用該寫法,當還要新增學生分數時,即為 arrName 和 arrScore 陣列新增值
例如新增學生 Jenny,三科成績分別為 88、87、68,則語法為:

1
2
$arrName[] = 'Jenny';
$arrScore[] = array(0 => 88, 1 => 87, 2 => 68);

在成績表前加上序列號
可利用已有數值 $i,從 1 開始則是 $i+1。
在 for($i=0; $i<$sum; $i++){ 後面加上

1
$serial=$i+1;

然後將

1
echo '<tr><td>' . $arrName[$i] . '</td>';

改為

1
echo '<tr><td>'. $serial .'</td><td>' . $arrName[$i] . '</td>';

加上序號後的顯示結果

姓名 國語 數學 英語
1 John 79 73 80
2 Mary 83 65 91
3 Ben 66 78 84
4 Cody 90 93 95
5 Jenny 88 87 68

另外一種方式是把單個學生的多筆資料作成一個陣列
例如下面這個例子,我用 學號、姓名、電話、總成績 構成一個陣列

1
2
3
4
5
6
7
8
<?php
        $student = array(array(0 => 101, 1 => 'John', 2 => '0912227635', 3 => 282 ),
                array(0 => 102, 1 => 'Mary', 2 => '0912248650', 3 => 275 ),
                array(0 => 103, 1 => 'Ben', 2 => '0910774559', 3 => 267 ));
        foreach($student as $sdata){
                echo "學號:". $sdata[0] . ' | 姓名:' . $sdata[1] . ' | 電話:' . $sdata[2] . ' | 成績:' . $sdata[3] . '<br />' ;
        }
?>

上面的程式碼運行後顯示出來的結果為

學號:101 | 姓名:John | 電話:0912227635 | 成績:282
學號:102 | 姓名:Mary | 電話:0912248650 | 成績:275
學號:103 | 姓名:Ben | 電話:0910774559 | 成績:267

如果我要新增一個學生的資料,例如 Jenny,則在前面多加一行語法

$student[] = array(104, ‘Jenny’, ’0958075264′, 289);

補充:如果無法得知總成績,事先的三科成績分別在陣列的 3、4、5
那麽記得在 echo 前先把三科成績做總和計算:$result = $sdata[3] + $sdata[4] + $sdata[5];
最後在成績的位置印出 $result 即可。

Login