陣列(Array)
對於各項事務或資料的分類與管理,都是非常重要的一件事情,
而PHP也提供了非常好用的函式,讓我們達到這樣的目的,即陣列(array)
舉例
像是要記錄一個學生(bobo)的基本資料及各項成績欄位,如姓名、學號、國文成績、英文、數學等,就可以設定一個陣列變數「$bobo」就可以了,不必設定五個變數
PHP陣列和其他的程式語言(如C語言),最大的不同是,
在PHP裡同一個陣列的元素(element),可以是各種不同型態的值
舉例
以學生bobo的基本資料及成績為例
$bobo[0]="王大為";
$bobo[1]="9801005";
$bobo[2]=72;
$bobo[3]=68;
$bobo[4]=90;
陣列變數$bobo的第一、二個元素(索引為0、1)所儲存的是姓名及學號,資料型態為字串
而第三、四、五個元素(索引為2、3、4)儲存的是國文、英文及數學成績,資料型態為整數
宣告與初始化陣列
如同PHP其他的變數一樣,PHP陣列在使用前,也是不需要宣告的。其宣告動作將在初始化、並指定其值的時候自動完成
而一般陣列初始化的方法,大致有以下數種:
1. 一次將所有陣列初始化完畢
2. 動態增加陣列
事實上,不論是否一次將陣列初始化完畢,都可以隨時視需要動態增加陣列
陣列的初始化
1. 透過索引的方式初始化陣列 (直接指定索引值的方式)
2. 利用array()函式,直接初始化陣列
初始化陣列的方式不只這兩種
透過索引的方式宣告
舉例
$grade[0]=90;
$grade[1]=100;
echo
$grade[0];
echo("
");
");
echo($grade[1]); echo("
");
");
通常也會讓索引搭配for()迴圈,將陣列裡的元素一一取出
利用array()函式方式宣告
舉例
$member = array("大河馬","21","北市花園");
echo($member[0]); echo("
");
");
echo($member[2]); echo("
");
");
顯示結果
大河馬
北市花園
也可以參考這樣寫
$number=array("1","2","3","4","5",
"6","7","8","9","0",
"a","b","c","d","e",
"f","g","h","i","j",
"k","l","m","n","o");
echo($number[10]); echo("
");
");
echo($number[20]); echo("
");
");
顯示結果
a
k
k
動態增加陣列
如果忘記輸入「索引值」,程式會自動補上,這樣就可達到動態增加陣列的效果
範例
$price[0]=220;
$price[1]=399;
$price[]=100;
$price[]=179;
其結果如下
$price[0]=220;
$price[1]=399;
$price[2]=100;
$price[3]=179;
把字串當作索引的陣列
一般如果以數字當作索引,如下:
$dic[0]="一種遠古流傳的生物";
$dic[1]="一種人不能沒有的東西";
類似這樣的資料,很難去分辨其相對的解釋與意義,如果用「文字」當作索引
$dic["dragon"]="一種遠古流傳的生物";
$dic["money"]="一種人不能沒有的東西";
當中索引值(index)由於採用「文字」,所以必須利用「""」來標記
範例:
$input="dragon";
$dic["dragon"]="一種遠古流傳的生物";
$dic["money"]="一種人不能沒有的東西";
$dic["gun"]="一種人具有強大殺傷力的致命武器";
$dic["car"]="一種可以搭載及具有運輸能力的機械裝置";
echo("使用者輸入的查詢=".$input."");
echo("查詢結果=".$dic[$input]);
二維陣列的初始化
「一維陣列」的排列儲存方式,有如「長條形」般,依據陣列裡的「索引」不斷向右延伸
「二維陣列」的排列儲存方式,有如「平面座標」一般,即行、列軸
例如:
$jacky=array(
"tom"=>array("mary","kitty"),
"bob"=>array("john","carol")
);
陣列值內容為
$jacky["tom"][0]
為mary
$jacky["tom"][1]
為kitty
$jacky["bob"][0]
為john
$jacky["bob"][1]
為carol
或用直接索引值方式宣告,例如:
$jack["tom"][0]="mary";
$jack["tom"][1]="kitty";
$jack["bob"][0]="john";
$jack["bob"][1]="carol";
陣列的相關函式
計算陣列裡有多少個元素(element)個數
PHP提供一個專門計算陣列的函式count(),回傳的值:其資料型態為「integer」
範例:
$money=array("US ","NT$","Penny");
echo(count($money));
顯示結果「3」
透過count()函式的幫忙,可以省去自行計算陣列元素的麻煩
以上,若要將陣列裡的元素輸出,則程式如下:
For(i=0;i
{
echo($money[$i]);
}
以上的程式碼,可以將陣列裡的元素一一輸出
而改用count()函式做元素計算,如此一來程式的重複使用性,就會提高許多
刪除陣列裡的元素
必須靠unset()函式來完成,這與刪除「變數」的方法是相同的,回傳的值:NA
舉例
Unset($student[3]); //刪除陣列變數元素本身
Unset($st); //刪除變數本身
陣列的排列
排序陣列的函式:sort($arr)、rsort($arr)。回傳的值:NA
舉例:sort($name)遞增排序、rsort($score)遞減排序
輸出的結果,會依陣列內容值依序排列,當中的「索引值」會因為排序而變更
陣列sort()排序前
第0個索引值:3陽開泰
第1個索引值:1飛沖天
第2個索引值:4季如春
第3個索引值:2小無猜
陣列sort()排序後
第0個索引值:1飛沖天
第1個索引值:2小無猜
第2個索引值:3陽開泰
第3個索引值:4季如春
其實sort()函式會針對元素的內容值,進行排序後,再重新指定索引,
也就是從0開始,將排序後的元素值一一指定至其數字索引之內
檢查索引是否存在
函式:empty($arr)
回傳的值:若字串的索引存在則回傳false,反之則回傳true
舉例
$input="computer";
$dic["book"]="書籍";
$dic["map"]="地圖";
$dic["computer"]="電腦";
if(empty($dic[$input])==false)
{
echo("\$dic[$input]存在"." is
$dic[$input]");
}
else
{
echo("\$dic[$input]不存在");
}
列出陣列的索引內容(index)
如果索引在建立時,並非以連續數字依序建位或都以字串作為索引
此時若想一次取出所有的元素值,將會是一項煩人的工作
範例
$dic["book"]="書籍";
$dic["desk"]="書桌";
$dic["note"]="筆記";
while(list($index_A,$element_B)=each($dic))
{
echo($index_A." ".$element_B."
");
");
} //$index_A為索引值 ,$element_B為內容值
顯示結果
book 書籍
desk 書桌
note 筆記
desk 書桌
note 筆記
each()函式,可以傳回目前元素的索引及內容值之外,並將陣列的「指標」移到下一個元素
list()主要功能,如list($index,$element)即是將$dic陣列變數裡的「索引值」及「內容值」,分別指定給變數$index及$element
each()函式,將依序取出陣列裡的每一個元素的索引及內容值,並傳給list(),
並存入list()所設定的變數之中
沒有留言:
張貼留言