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(關鍵字,陣列,檢查型別(選填) 以關鍵字搜尋陣列元素內是否有符合的索引鍵。

更多陣列函式:http://www.w3school.com.cn/php/php_ref_array.asp

感謝您的閱讀,請用力地分享讓大家知道吧~~

1 2

Aidec Li
學我所見,寫我所學。凡事略懂略懂~~
更多 Aidec Li 的文章...

很抱歉,此文章關閉留言