|
4-4
PHP
陣列
內容:
4-4-1 PHP
陣列相關敘述
(A)
一維陣列宣告
一維陣列的宣告語法如下:
$name[] = “張大名”;
//name[0] 內容是張大名
$name[] = “劉友德”;
//name[1] 內容是劉友德
$data = array(90, 80, 40); //data[0]=90、data[1]=80、data[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, ...,整數排列,陣列元素單元可以任意取名或任意數值排列,如此的話,一般程式語言內的
for、while、do-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 關聯圖
資料庫程式設計:
翻轉電子書系列:
|