第5章數組

5數組數組

 

學習要點:app

1.什麼是數組函數

2.自定義鍵數組學習

3.數組裏的數組測試

4.數組的排序spa

5.數組的指針操做指針

6.統計數組個數排序

7.將數組轉換成標量變量索引

 

一.什麼是數組

傳統上把數組(array)定義爲一組有某種共同特性的元素,包括類似性和類型。每一個元素由一個特殊的標識符來區分,稱之爲鍵(key);而每一個鍵對應一個值(value)。ip

 

李彥宏

周鴻禕

馬雲

俞敏洪

李開復

吳祁

 

依照上表,咱們建立一個數組。

 

第一種:

          $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,[int extract_type],[string prefix]);

函數extract()的做用是經過一個數組建立一系列的標量變量,這些變量的名稱必須是數組中關鍵字的名稱,而變量值則是數組中的值。

     $array=array("key1"=>"value1","key2"=>"value2","key3"=>"value3");

       extract($array);

echo $key1.$key2.$key3;

相關文章
相關標籤/搜索