php中什麼是關聯陣列

2022-09-30 18:01:29

在php中,關聯陣列是值以字串或字串、數位混合為鍵名的陣列;如果一個陣列中有一個鍵名不是數位,那麼這個陣列就是關聯陣列。關聯陣列的鍵名可以是任何一個整數或字串;如果鍵名是一個字串,則要給這個鍵名加上一個定界修飾符:單引號「''」或雙引號「""」。

php入門到就業線上直播課:進入學習
API 檔案、設計、偵錯、自動化測試一體化共同作業工具:

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

陣列中的每個實體都包含兩項,分別是鍵(key)和值(value)。可以通過鍵值來獲取相應的陣列元素,這些鍵可以是數值鍵,也可以是關聯鍵。如果說變數是儲存單個值的容器,那麼陣列就是儲存多個值的容器。

陣列可以存入不同型別的資料,是一個複合資料型別。資料結構如下圖:

1.jpg

在 PHP 陣列中,無論什麼型別的鍵名都會有一個值與其相對應,即一個鍵/值對,根據陣列鍵名資料型別的不同,我們可以把 PHP 陣列分為兩種型別:

  • 以數位作為鍵名的陣列,即索引陣列(Indexed Array);

  • 以字串或字串、數位混合為鍵名的陣列,即關聯陣列(Associative Array)。

PHP 關聯陣列

關聯陣列的下標(鍵名)由數值和字串混合的形式組成,如果一個陣列中有一個鍵名不是數位,那麼這個陣列就是關聯陣列。

<?php
header("Content-type:text/html;charset=utf-8");
echo "索引陣列:";
$arr1 = array('0' => '蘋果','1' => '香蕉','2' => '橘子','3' => '李子','4' => '草莓');
var_dump($arr1);

echo "關聯陣列:";
$arr2 = array('Apple' => '蘋果','Banana' => '香蕉','Orange' => '橘子','Plum' => '李子','Strawberry' => '草莓');
var_dump($arr2);
$arr3 = array('蘋果','香蕉','橘子','Plum' => '李子','草莓');
var_dump($arr3);
?>
登入後複製

1.png

關聯陣列的鍵名可以是任何一個整數或字串。如果鍵名是一個字串,則要給這個鍵名加上一個定界修飾符——單引號''或雙引號""。對於索引陣列,為了避免混清,最好也加上定界符。

注:鍵名不可以為NULL

擴充套件知識:索引陣列和關聯陣列可以相互轉換

1、關聯陣列轉為索引陣列

array_values()函數的作用是返回陣列中所有元素的值

array_values(array)
登入後複製

使用起來非常簡單,只有一個必選引數,就可以返回一個包含給定陣列中所有值的陣列,但不保留鍵名。被返回的陣列將使用索引陣列的形式,陣列的索引從 0 開始且以 1 遞增。

簡單來說,利用該函數可以重置陣列鍵名,將字串或數值混亂的鍵名轉為從0開始且以1遞增的數位鍵名。

array_values() 函數特別適合用於陣列中元素下標混亂的陣列(可重置數位鍵),或者用於將關聯陣列轉化為索引陣列。

<?php
header('content-type:text/html;charset=utf-8');  
$arr=array("Peter"=>65,"Harry"=>80,"John"=>78,"Clark"=>90,2,3,4);
echo "原陣列:";
var_dump($arr);
$res=array_values($arr);
echo "轉為索引陣列後:";
var_dump($res);
?>
登入後複製

2.png

2、索引陣列轉為關聯陣列

array_combine()函數通過合併兩個陣列的方式建立了一個新陣列,其中$keys陣列中的元素作為了新陣列的鍵名,$values陣列的元素為作為了新陣列的鍵值。

array_combine($keys,$values)
登入後複製

但需要注意的是,使用array_combine()函數建立陣列時,$keys陣列和$values陣列中的元素個數必須要一致,這才能讓鍵名和鍵值一一對應,否則就會報錯並返回 FALSE。

$keys陣列不可為多維陣列,否則也會報錯;但$values陣列可以為多維陣列。

<?php
header("Content-type:text/html;charset=utf-8");
$keys=array("a","b","c","d");
$values=array("red","green","blue","yellow");
var_dump($keys);
var_dump($values);
echo "使用array_combine()合併陣列後:";
var_dump(array_combine($keys,$values));
?>
登入後複製

推薦學習:《》

以上就是php中什麼是關聯陣列的詳細內容,更多請關注TW511.COM其它相關文章!