您好,登錄后才能下訂單哦!
一.什么是數組
傳統上把數組(array)定義為一組有某種共同特性的元素,包括相似性和類型。每個元素由一個特殊的標識符來區分,稱之為鍵(key);而每個鍵對應一個值(value)。
李彥宏 | 周鴻祎 | 馬云 | 俞敏洪 | 李開復 | 吳祁 |
依照上表,我們創建一個數組。
第一種:
$userNames=array('李彥宏','周鴻祎','馬云','俞敏洪','李開復','吳祁');
這是索引數組初始化:
數字索引的初始值是從0開始計算的:
userNames[0]---userNames[5],代表這6個人的名字。
第二種:
通過range()函數自動創建一個數組
$numbers=range(1,10) $letters=range('a','z')
可以加第三個參數$numbers=range(1,10,2),第三個參數表示步長
訪問數組的內容:
要訪問一個變量的內容,可以直接使用其名稱。如果該變量是一個數組,可以使用變量名稱和關鍵字或索引的組合來訪問其內容。
$numbers[0]、$numbers[1]、$numbers[2];等。
改變數組的值:
$numbers[0]="Lee";
使用循環訪問數組
由于數組使用有序的數字作為索引,所以使用一個for循環就可以很容易地顯示數組的內容:
for ($i=0;$i<10;$i++) {
echo $numbers[$i];
}
也可以使用foreach循環來遍歷數組:
foreach ($numbers as $value) {
echo $value;
}
測試是否為數組變量:is_array();
print_r 函數:打印關于變量的易于理解的信息
二.自定義鍵數組
初始化相關數組
$ages=array('吳祁'=>19,'李炎恢'=>27,'胡心鵬'=>23);
訪問數組元素
$ages["吳祁"];
$ages["李炎恢"];
$ages["胡心鵬"];
追加數組:首先,創建只有一個元素的數組,然后追加兩個元素。
$ages=array("吳祁"=>19);
$ages["李炎恢"]=27;
$ages["胡心鵬"]=23;
直接添加數組:無需創建,直接添加,添加第一個元素自動建立數組。
$ages["吳祁"]=19;
$ages["李炎恢"]=27;
$ages["胡心鵬"]=23;
使用循環語句:因為相關數組的索引不是數字,因此無法使用for循環語句中使用一個簡單的計數器對數組進行操作。但是可以使用foreach循環或list()和each()結構。
foreach ($ages as $key=>$value) {
echo $key."=>".$value."<br/>";
}
使用each()結構打印$ages數組的內容:each()函數返回數組的當前元素,并將下一個元素作為當前元素。
while (!!$element=each($ages)) {
echo $element["key"];
echo "=>";
echo $element["value"];
echo "<br/>";
}
使用list()函數,可以用來將一個數組分解為一系列的值。可以按照如下方式將函數each()返回的兩個值分開:
list($name,$age)=each($ages);
當使用each()函數時,數組將記錄當前元素。如果希望在相同的腳本中兩次使用該數組,就必須使用函數reset()將當前元素重新設置到數組開始處。
reset($prices);
確定唯一的數組元素:array_unique();它會刪除掉里面相同值的元素。
置換數組鍵和值:array_flip();它會對調數組中的key和value;
三.數組里的數組
數組不一定就是一個關鍵字和值的簡單列表----數組中的每個位置用來保存另一個數組。使用這種方法,可以創建一個二維數組。可以把二維數組當成一個矩陣,或者是一個具有寬度和高度或者行和列的網格。
二維表
產品名 | 數量 | 價格 |
蘋果 | 6 | 28.8 |
豬肉 | 2 | 32.1 |
餅干 | 3 | 45.3 |
$products=array(
array("蘋果",6,28.8),
array("豬肉",2,32.1),
array("餅干",3,45.3)
);
顯示這個二維數組:
echo "|".$products[0][0]."|".$products[0][1]."|".$products[0][2]."|<br />";
echo "|".$products[1][0]."|".$products[1][1]."|".$products[1][2]."|<br />";
echo "|".$products[2][0]."|".$products[2][1]."|".$products[2][2]."|<br/>";
此外,還可以使用雙重for循環來實現同樣的效果:
for ($row=0;$row<3;$row++) {
for ($column=0;$column<3;$column++) {
echo "|".$products[$row][$column];
}
echo "|<br/>";
}
使用列明的二維數組:
$products=array(
array("產品名"=>"蘋果","數量"=>6,"價格"=>28.8),
array("產品名"=>"豬肉","數量"=>2,"價格"=>32.1),
array("產品名"=>"餅干","數量"=>3,"價格"=>45.3)
);
顯示這個二維數組:
第一種方式:
for ($row=0;$row<3;$row++) {
echo "|".$products[$row]["產品名"]."|".
$products[$row]["數量"]."|".$products[$row]["價格"]."|<br/>";
}
第二種方式:
for ($row=0;$row<3;$row++) {
while (!!list($key, $value)=each($products[$row])) {
echo "|".$value;
}
echo "|<br/>";
}
四.數組的排序
對保存在數組中的相關數據進行排序是一件非常有意義的事情。使用并且排序一個一維數組是非常簡單的。
使用sort()函數將數組按字母升序進行排序。
$products=array("orange","banner","apple");
sort($products);
使用sort()函數將數字升序進行排序。
$prices=array(100,10,4,23,78);
sort($prices);
sort()函數的第二個參數是可選的。這個可選參數可以傳遞SORT_REGULAR(默認值)、SORT_NUMERIC或SORT_STRING。指定排序類型的功能是非常有用的。比如,當要比較可能包含有數字2和12的字符串時,從數字角度看,2要小于12,但是作為字符串,"12"卻要小于"2"。
使用asort()函數和ksort()函數對相關數組排序
創建一個包括3個產品及價格的數組,然后將它們按價格的升序進行排序:
$prices=array("c"=>蘋果,"a"=>豬肉,"b"=>餅干);
asort($prices);
按說明排序使用ksort()函數
ksort($prices)
反向排序:sort()、asort()和ksort()都是正向排序,當然也有相對應的反向排序.
實現反向:rsort()、arsort()和krsort()。
在一些應用程序中,可能希望按另一種方式對數組排序。函數shuffle()將數組個元素進行隨機排序。函數array_reverse()給出一個原來數組的反向排序。
shuffle($pictures);
array_reverse($pictures);
array_unshift()函數將新元素添加到數組頭,array_push()函數將每個新元素添加到數組的末尾。
array_shift()刪除數組頭第一個元素,與其相反的函數是array_pop(),刪除并返回數組末尾的一個元素。
array_rand()返回數組中的一個或多個鍵。
五.數組的指針操作
在數組中瀏覽:each()、current()、reset()、end()、next()、pos()、prev();
調用next()或each()將使指針前移一個元素。調用each($array_name)會在指針前移一個位置之前返回當前元素。next()函數則有些不同----調用next($array_name)是將指針前移,然后再返回新的當前元素。
要反向遍歷一個數組,可以使用end()和prev()函數。prev()函數和next()函數相反。它是將當前指針往回移一個位置然后再返回新的當前元素。
六.統計數組個數
count()和sizeof()統計數組下標的個數
array_count_values()統計數組內下標值的個數
七.將數組轉換成標量變量:extract()
對于一個非數字索引數組,而該數組又有許多關鍵字-值對,可以使用函數extract()將它們轉換成一系列的標量變量。extract()函數原型如下:
extract(array var_array,[intextract_type],[string prefix]);
函數extract()的作用是通過一個數組創建一系列的標量變量,這些變量的名稱必須是數組中關鍵字的名稱,而變量值則是數組中的值。
$array=array("key1"=>"value1","key2"=>"value2","key3"=>"value3");
extract($array);//講數組中的鍵變為變量可以直接輸出
echo $key1.$key2.$key3;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。