1. 程式人生 > 實用技巧 >php-多維陣列,陣列遍歷

php-多維陣列,陣列遍歷


一、多維陣列

多維陣列:數組裡面的元素又是陣列

1、二維陣列

二維陣列:陣列中所有的元素都是一位陣列

2、多維陣列

在第二維的陣列元素中可以繼續是陣列,在PHP中沒有維度限制(PHP本質並沒有二維陣列)

3、異形陣列

異形陣列(不規則陣列):陣列中的元素不規則,既有陣列也有普通變數,在實際開發中並不常用,儘量讓陣列元素規則化,方便訪問

二、陣列遍歷

陣列遍歷:普通陣列資料的訪問都是通過陣列元素的下標來實現訪問,如果說陣列中所有的資料都需要依次輸出出來,就需要我們使用到一些簡化的規則來實現自動獲取下標以及輸出陣列元素。

1 $arr=array(0=>array('name'=>'Tom'),1=>array
('name'='jim'));//二維陣列 2 3 //訪問一維元素:$arr[一維下標] 4 $arr[0];//結果:array('name'=>'Tom' ); 5 6 //訪問二維元素:$arr[一維下標][二維下標] 7 $arr[1]['name'];//結果:jim
1、foreach遍歷語法

通常:如果是關聯陣列(字母下標),就需要下標,如果是數字下標就直接訪問值

1 foreach($陣列變數 as [$下標=>] $值){
2     //通過$下標訪問元素的下標﹔通過$值訪問元素的值
3 }
4 //[$下標=>]可以不用寫

示例:

在進行資料儲存定義的時候,通常二維陣列不會兩個維度的key下標都為數字,一般是一維為數字(無意義),二維為字串(資料庫表字段),所以在進行遍歷的時候,通常是隻需要針對一維進行遍歷,取得二維陣列元素,然後二維陣列元素通過下標去訪問。

2、foreach遍歷原理

Foreach遍歷的原理:本質是陣列的內部有一顆指標,預設是指向陣列元素的第一個元素,foreach就是利用指標去獲取資料,同時移動指標。

foreach($arr as $k => $v){ //迴圈體 }

1、foreach會重置指標:讓指標指向第一個元素; 2、進入foreach迴圈:通過指標取得當前第一個元素,然後將下標取出放到對應的下標變數$k中(如果存在),將值取出來放到對應的值變數$v中;(指標下移) 3、進入到迴圈內部(迴圈體),開始執行; 4、重複2和3,直到在2的時候遇到指標取不到內容(指標指向陣列最後)

3、for迴圈遍歷

For迴圈:基於已知邊界條件(起始和結束)然後有條件的變化(規律)因此: for迴圈遍歷陣列有對應條件 1、獲取陣列長度:count(陣列)得到陣列元素的長度 2.要求陣列元素的下標是規律的數字

4、while配合each和list遍歷陣列

While是在外定義邊界條件,如果要實現可以和for迴圈。

  • Each函式使用: each能夠從一個數組中獲取當前陣列指標所指向的元素的下標和值,拿到之後將陣列指標下移,同時將拿到的元素下標和值以一個四個元素的陣列返回:

  1. o下標–》取得元素的下標值
  2. 1下標–》取得元素的值
  3. Key下標–》取得元素的下標值
  4. value下標–》取得元素的值
  • 如果each取不到結果(陣列指標移動到最後),返回falsev

  • List函式使用:list是一種結構,不上一種函式(沒有返回值),是list提供一堆變數去從一個數組中取得元素值,然後依次存放到對應的變數當中(批量為變數賦值:值來源於陣列) list必須從索引陣列中去獲取資料,而且必須從o開始。

  • List與each配合特別好:each一定有兩個元素就是О和1下標元素 List(變數1,變數2)= each(陣列);/是一種賦值運算,但是可以得到false結果(each取不到正確的結果),整個表示式為falsee