php學習(7)數組

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()函數經常一起使用。

關於這一點,研究了一下:

  1. $arr1 = array("os1"=>"android","os2"=>"symbian","os3"=>"ios");  
  2.     while(list($k$v) = each($arr1)){  
  3.         echo $k."=>".$v." <br/>";  
  4.     } 
結果:

  1. os1=>android   
  2. os2=>symbian   
  3. 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"
}

發佈了45 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章