PHP教學系列(八)-陣列
(二)二維陣列
這邊我們以最前面的舉例做為說明,假設全校有3000人學生,每個人共有5科的成績。
若我們使用一維陣列的話,就必須定義5個一維陣列才能完成。例如:
$chinese[]=學生成績;
$english[]=學生成績;
$math[]=學生成績;
$Physics[]=學生成績;
$Chemistry[]=學生成績;
但如果我們使用二維陣列的話,只需要一個二維陣列就能解決問題。例如:
$Student[0][0]=成績; //學生編號一的國文成績
$Student[1][0]=成績; //學生編號一的英文成績
$Student[2][0]=成績; //學生編號一的數學成績
$Student[3][0]=成績; //學生編號一的物理成績
$Student[4][0]=成績; //學生編號一的化學成績
我們用二維陣列的第一個索引值為識別科目,第二個索引值為學生編號。
為了方便辨認,我們也可以使用字串作為索引鍵。例如改寫成:
$Student[‘國文’][0]=成績; //學生編號一的國文成績
$Student[‘英文’][0]=成績; //學生編號一的英文成績
$Student[‘數學’][0]=成績; //學生編號一的數學成績
$Student[‘物理’][0]=成績; //學生編號一的物理成績
$Student[‘化學’][0]=成績; //學生編號一的化學成績
同樣的,二維陣列跟一維陣列一樣,都可以使用array()來建立陣列,例如:
$Student=array( ‘國文’=>array( 50,80,100,40), //學生編號0~3的國文成績
‘英文’=>array(30,40,80,40), //學生編號0~3的英文成績
‘數學’=>array(60,30,100,70), //學生編號0~3的數學成績
‘物理’=>array(90,30,40,0), //學生編號0~3的物理成績
‘化學’=>array(40,55,60,50)); //學生編號0~3的化學成績
範例:
<?php
$Student=array(‘國文’=>array(50,80,100,40),
‘英文’=>array(30,40,80,40),
‘數學’=>array(60,30,100,70),
‘物理’=>array(90,30,40,0),
‘化學’=>array(40,55,60,50));
for ($i=0;$i<=3;$i++){
echo “學生”.$i.”國文成績”.$Student[‘國文’][$i].”分<br>”;
echo “學生”.$i.”英文成績”.$Student[‘英文’][$i].”分<br>”;
echo “學生”.$i.”數學成績”.$Student[‘數學’][$i].”分<br>”;
echo “學生”.$i.”物理成績”.$Student[‘物理’][$i].”分<br>”;
echo “學生”.$i.”化學成績”.$Student[‘化學’][$i].”分<br>”;
}
?>
實際範例:example-8-2.php
(三)多維陣列
基本上用法與二維陣列相同,舉例欲儲存全市學校的學生成績,可以使用多維陣列來完成。
例如:
學校編號10號,3年4班20號的國文成績(以0代表)
$Student_Score[10][3][4][20][0]=80;
越多維陣列會越來越複雜,但一般來說頂多用到三維陣列,又或者直接使用資料庫來儲存資料。通常,陣列都會使用迴圈來取得值,不會手動去操作。
(四)陣列函式:
(1).array_chunk() 分割陣列成多維陣列
格式:
array_chunk(陣列,數量);
範例:
$a=array(1,2,3,4,5,6,7,8);
$a=array_chunk($a,2);
(2).compact() 將數個變數合成為陣列
格式:
compact(變數1,變數2,….變數n);
範例:
$a=1; $b=2 ; $c=3;
$com_array=compact(“a”,”b”,”c”);
(3).print_r() 顯示陣列內容,只可顯示一個變數
格式:
print_r(變數);
範例:
$a=array(“A”,”B”,”C”);
print_r($a);
(4).var_dump 顯示陣列詳細內容(型別、大小、內容),可顯示多個變數
格式:
var_dump(變數1,變數2);
範例:
$a=10;
$b=”Aidec”;
var_dump($a,$b);
(5).is_array()判斷是否為陣列
格式:
is_array(變數)
範例:
<?php
$a=array(1,2,3);
if(is_array($a)){
echo ‘是陣列’;
}else {
echo ‘不是陣列’;
}
?>
(6).count() 計算陣列內元素的數量
格式:
count(陣列)
範例:
$a=array(1,2,3,4);
echo count($a);
//回傳結果 4
(7).array_count_values() 計算陣列元素重複次數
格式:
array_count_values(陣列)
範例:
$a=array(1,2,3,2,1);
echo $array_count_value($a);
(8).array_sum() 加總陣列內元素值
格式:
array_sum(陣列);
範例:
$a=array(1,2,3);
echo array_sum($a);
//顯示結果 6
(9).shuffle() 打亂陣列元素順序
格式:
shuffle(陣列)
範例:
$a=array(1,2,3,4);
shuffle($a);
//顯示結果
原先 array[0]=1 , [1]=2 , [2]=3 ,[3]=4
打亂後 array [0]=4 , [1]=1 ,[2]=2 ,[3]=3
(10)array_reverse() 陣列元素順序反轉
格式:
arrau_reverse(陣列);
範例:
$a=array(1,2,3);
print_r(array_reverse($a));
陣列排序
(1)sort()、rsort() 元素排序
sort :依照元素遞增排序。
rsort:依照元素遞減排序。
範例:
$a=array(d,c,e,a);
sort($a);//結果 a,c,d,e
rsort($a);//結果 e,d,c,a
(2)ksort()、krsost()依照索引鍵遞增、遞減
ksort():依照索引鍵遞增排序。
krsort():依照索引鍵遞減排序。
$a=array(“d”=>”apple”,”b”=>”dog”,”a”=>”cat”,”c”=>”bird”);
ksort($a); //結果 cat 、 dog、bird、apple
krsort($a); //結果 apple、bird、dog、cat
陣列的管理:
array_shift(陣列):刪除陣列第一個元素。
array_pop(陣列):刪除陣列最後一個元素。
array_slice(陣列,初始位置,取出數):取得指定陣列的元素,從起始位置開始依取出數取出。
array_rand(陣列,取出數):隨機取出陣列元素。
陣列的指標:
指標表示現在陣列的記錄位置,用來標示目前陣列中的哪一資料。
功能 | 說明 |
---|---|
reset(陣列) | 將指標移動至陣列第一個元素位置。 |
next(陣列) | 將指標移動至陣列下一個元素位置。 |
prev(陣列) | 將指標移動至陣列上一個元素位置。 |
end(陣列) | 將指標移動至陣列最後一個元素位置。 |
key(陣列) | 取得目前指標位置的索引鍵。 |
陣列的搜尋:
功能 | 說明 |
---|---|
in_array(關鍵字,陣列,檢查型別(選填) | 以關鍵字搜尋陣列元素內是否有符合的資料。 |
array_search(關鍵字,陣列,檢查型別(選填) | 以關鍵字搜尋陣列元素內是否有符合的索引鍵。 |
感謝您的閱讀,請用力地分享讓大家知道吧~~
1 2
很抱歉,此文章關閉留言