1. 數組定義:
$arr1 = array('0' => 'a', '1' => 'b');
或者:
$arr2[0] = 'a';$arr2[1] = 'b';
輸出結果是一樣的:
Array ( [0] => a [1] => b )
Array ( [0] => a [1] => b )
同理:
$arr1 = array('a' => '0', 'b' => '1');
$arr2['a'] = '0';
$arr2['b'] = '1';
如果不指定位置而給未定義的數組元素賦值,那麼將依次對數組的元素進行賦值。
$arr2[] = 'a';
$arr2[] = 'b';
2. each()函數:
返回 array 數組中當前指針位置的鍵值對,並向前移動數組指針。鍵值對被返回爲四個單元的數組,新鍵名順序爲1,value,0,key。1 和 value 的值爲數組單元的值,0 和 key 的值爲數組單元的鍵名。
如果數組指針已經到了結尾,再移動,則返回false。
3. list()函數:
只對有數字索引單元的數組起作用,數字索引從0開始。按照數字索引0、1、2、3、......的順序,依次把相應單元的值對應賦值給多個變量。
list()函數與each()函數經常一起使用。
關於這一點,研究了一下:
- $arr1 = array("os1"=>"android","os2"=>"symbian","os3"=>"ios");
- while(list($k, $v) = each($arr1)){
- echo $k."=>".$v." <br/>";
- }
- os1=>android
- os2=>symbian
- os3=>ios
第一點:雖然調用each()函數返回的是四個單元的數組,但只有索引爲1、0的單元對list()函數有用。
第二點:賦值時並不是按照數組中的單元的順序,而是按照數字索引從0開始的順序依次賦值。所以數字索引爲0的單元的值,被賦給list()函數的第一個參數;數字索引爲1的單元的值,被賦給list()函數的第二個參數。
※沒有設置索引的數組,默認是數字索引,索引爲0、1、2、3、......。
試了一下各種調用list()函數出錯的情況。明白以上內容,當使用list()函數出錯時,就知道原因啦。
另外,list()函數是從最右邊的參數開始賦值的。但不要理解成把數組索引爲0的單元的值賦給最右邊的參數哦!list()函數已經知道每個參數應該賦予哪個值,只不過是從最右邊的參數開始進行這件事情。
如果list()函數的參數是單純的變量,那不用擔心這一點,輸出變量的時候一切正常。但是如果參數是具有索引的數組的單元,那麼輸出整個數組時,該數組中的單元的順序,與list()函數參數中的數組單元的順序,是相反的。
例子:
<?php
$info = array('coffee', 'brown', 'caffeine');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
產生如下輸出(注意單元順序和 list() 語法中所寫的順序的比較):
array(3) {
[2]=>
string(8) "caffeine"
[1]=>
string(5) "brown"
[0]=>
string(6) "coffee"
}