PHP數組不同於其它語言的一個特點就是它支持數字索引數組和關聯數組。對於索引數組的話凡是學過C的人都知道,那麼PHP關聯數組是怎麼一回事呢,好,接下來就聊聊看!
PHP定義數組的方法:
$phpary = array( '12','ab',array( 'cc','22' ) );
這種定義方式就是PHP定義數組的方法,它同時還給數組賦了值。當然你也可以定義一個空數組然後再去賦值也可以,PHP還有一種定義數組的方式,如下:
$ary[] = 'abc';
$ary[] = '123';
print_r( $ary );
這種方式就是你可以不用聲明數組,直接以這種方式賦值,然後哪個變量其實就已經是一個數組了。
另外從中可以看到,PHP語言屬於弱類型語言,即數組中的元素並不是必須是同一類型數據而是可以使任意類型的數據,這點也是PHP數組的一個特點。
上面介紹的PHP數組都是索引數組,就是當你打印出數組看的時候會發現他們的鍵值都是數字,而且從0開始遞增。
那麼接下來就看一個關聯數組:
$ary1 = array( 'name'=>'beyond','sex'=>'m','age'=>20 );
關聯數組的定義方式就如上面一樣,當你打印出上面的數組看的時候就會發現它們的鍵值都是“=>”左邊的值,而數組的值就是“=>”右邊的值。
當然如果你看到了文章那麼你可以想象一下當PHP數組中既有關聯的定義方式又有索引方式那打印出的數組會是怎麼樣呢?請測試下。。。。。
定義呢就這麼多了,沒什麼可說的,當你學習PHP的時候相信你已經對上面的東西很瞭解了。
但是下面還得說一些關於如何輸出PHP數組的方法和一些常用的PHP數組的操作函數(PHP核心庫中的一些函數)。
如何輸出一個數組呢?當你知道這個數組的長度的時候可以通過for循環來輸出,那麼這裏就需要一個求PHP數組長度的函數,常用的就是count()函數,但是這種僅僅限於你將要輸出的數組爲索引數組,當數組中包含關聯項的時候這種方式就不適應了,於是PHP就提供了foreach(){}來循環的輸出數組,這裏就不寫代碼了,想測試的自己寫代碼測試吧,沒難度。
這裏我們要記錄的另外一種輸出數組的方式,雖然它不常見,但是卻很有用,代碼如下:
$ary1 = array( 'name'=>'beyond','sex'=>'m','age'=>20 );
while( ( list( $k,$v ) = each( $ary1 ) ) != FALSE ){
echo '<br/>' . $k . '=>' . $v;
}
首先each()函數從$ary1數組中取出第一個元素,並且將這個元素的鍵和值分別當做一個元素存放於一個新的數組中返回給list( $k,$v ),然後當list()函數接受到這個臨時數組的時候就判斷這個數組是不是一個索引數組,如果不是的話就會報錯退出,如果是的話那就將這個數組的值按順序分別賦值給$k,$v....,這後面的省略號說明當臨時數組中有幾個元素的時候這裏的參數就是幾個,我們現在臨時數組中有兩個元素那麼list()中只需要兩個參數,然後接下來分別輸出就是了。
對於這個過程還請大家好好琢磨一番,因爲好的理解對於你後來的運用有很好的幫助。
這裏有一些常用的PHP函數,不一一詳解,如果你還不知道的話請查看手冊吧。
排序函數:sort()
多維數組排序函數:usort()
對每個數組的元素應用任何函數:array_walk()
統計數組中各個元素出現的頻率:array_count_values()
等等一些函數像array_push()、array_pop()、array_shift()、array_unshift()等,這裏就不再記錄,下面就講一個很好用的函數吧:array_merge()
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r( $result );
然後它的官方解釋如下:
array_merge() 將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作爲結果的數組。
如果輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。
這裏說下上面畫下劃線的那句,其實你大可不必去考慮,因爲從這個函數的原型可以看出
array array_merge ( array $array1 [, array $array2 [, array $... ]] )
它所要求的參數其實只有一個,當你傳一個數組給它的時候那麼如果你這個數組是索引的那麼它會幫你重新存一遍再返回給你就是說索引一定是從0開始遞增的,如果你裏面含有關聯項,那麼它不做任何事直接返回給你。
這裏必須明確一點就是在PHP5.3之後這個參數必須是數組。
然後對於多維數組的話跟上面的一樣,請大家自己去測試吧!
好,今天就到這兒~\(≧▽≦)/~啦啦啦