php中陣列下標必須是連續的嗎

2022-10-14 22:04:00

php陣列下標可以不是連續的。在php中,陣列的下標可以整數,也可以是字串;陣列的元素順序不是由下標決定,而是由其「加入」的順序決定。PHP陣列的下標可任意設定,無需順序,也無需連續,例「array(2=>1,4=>1.1,3=>5,7=>'abc',0=>true); 」。

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦

陣列基礎:

php中,陣列的下標可以整數,也可以是字串

php中,陣列的元素順序不是由下標決定,而是由其「加入」的順序決定

定義:

$arr = array(元素1,元素2,...);
登入後複製

範例1:

$arr1 = array(1,1.1,5,'abc',true,false); //可以儲存任何資料,此時為預設下標
$arr2 = array(2=>1,4=>1.1,3=>5,7=>'abc',0=>true); //下標可任意設定(無需順序,無需連續)
$arr3 = array(2=>1,1.1,1=>5,'abc',0=>true); //可以加下標,也可以不加,不加下標則為預設下標

//預設下標規則:前面已經用過的最大數位下標+1
//這個數位的下標分別是:2,3,1,4,0
登入後複製

1.png

範例2:

$arr1 = array(2=>1,'dd'=>5,1=>1.1,'abc',0=>true); //混合下標,同樣遵循預設下標規則
$arr2 = array(-2=>1,'dd'=>5,1.1,'abc',true); //負數下標不算在整數下標中,而只當作字元下標
//則這個陣列最後三項的下標為:0,1,2
登入後複製

2.png

範例3:

$arr1 = array(2.7=>1,'dd'=>5,1=>1.1,'abc',true); //浮點數下標會自動轉換為整數,且直接去掉小數部分
$arr2 = array("2.7"=>1,'dd'=>5,"11"=>1.1,'abc',true); //純數位字串下標,當作數位看待
$arr3 = array(2=>1,'dd'=>5,true=>1.1,'abc',false=>true); //布林值當作下標,則true為1,false為0
$arr4 = array(2=>1,'dd'=>5,2=>1.1,'abc',true); //如果下標跟前面的重複,則單純覆蓋前面同名下標的值
登入後複製

3.png

定義陣列的其他形式:

$arr1[] = 1;
$arr1[] = 5;
$arr1[] = 1.1;
......  //直接在變數後面使用[],就成為陣列,並依次賦值
登入後複製

4.png

$arr2['aa'] = 1;
$arr2['bb'] = 5;
$arr2[5] = 1.1;

......  //這種形式寫的下標,其實跟使用array語法結構幾乎一樣
登入後複製

5.png

陣列的分類:

從鍵值關係分為:

  • 關聯陣列:通常是指下標為字串,並且該字串大體可以表達出資料的含義的陣列

    例:

$person = array("name" => "poe", "age" => 18, "edu" => "大學畢業");
登入後複製
登入後複製
  • 索引陣列:通常是指一個陣列的下標嚴格的從0開始的連續的數位下標 -- 跟js陣列類似

從陣列層次為分:

  • 一維陣列:就是一個陣列中的每一個元素值,都是一個普通值(非陣列值)

    例:

$person = array("name" => "poe", "age" => 18, "edu" => "大學畢業");
登入後複製
登入後複製
  • 二維陣列:一個陣列中的每一項,又是一個一維陣列。

$person = array(
"name" => array("xiaohua","xiaofang),
"age" => array(18,22),
"edu" => array("大學畢業","小學",)
);
登入後複製
  • 多維陣列:依次類推。。。

    多維陣列的一般語法形式:

$v1 = 陣列名[下標][下標][......]
登入後複製

陣列的遍歷:

遍歷基本語法:

foreach($arr as [$key =>] $value) {
//這裡就可以對$key and $value進行所有可能的操作 -- 因為他們就是一個變數
//$key代表每次取得元素的下標,可能是數位,也可以是字串
//$value代表每次取得元素的值,可能是各種型別
//此迴圈結構會從陣列的第一項一直遍歷到最後一項,然後結束
}
登入後複製

陣列指標和遍歷原理:

每個陣列,其內部都有一個「指標」,該指標決定了該陣列當前取值的時候取到的元素

foreach遍歷過程中,都是依賴於該指標而進行的。

舉例:

$arr1 = array(2=>1,'dd'=>5,1=>1.1,'abc',0=>true);
登入後複製

指標除了負責foreach迴圈的位置設定之外,還有其他一些函數也依賴於指標:

1:$v1 = current($arr1); //取得$arr1中當前指標指向的元素的值,如果沒有指向元素,則為false

2:$v1 = key($arr1); //取得$arr1中當前指標指向的元素的下標,。。。。。。。。。。。。。

3:$v1 = next($arr1); //將指標移向「下一個元素」,然後取得該下一個元素的值

4:$v1 = prev($arr1); //將指標移向「上一個元素」,然後取得該上一個元素的值

5:$v1 = reset($arr1); //將指標移向「第一個元素」,並取得該元素的值

6:$v1 = end($arr1); //將指標移向「最後一個元素」,並取得該元素的值

7:$v1 = each($arr1); //取得當前元素的下標和值,然後移動指標到下一個位置

推薦學習:《》

以上就是php中陣列下標必須是連續的嗎的詳細內容,更多請關注TW511.COM其它相關文章!