如何在 PHP 中檢查陣列是關聯陣列還是順序陣列


什麼是關聯陣列?

關聯陣列是一種陣列型別,其中每個元素都與一個特定的鍵相關聯,而不是像順序陣列那樣分配一個數字索引。換句話說,您可以使用相應的鍵訪問它們,而不是按其位置訪問陣列元素。

在關聯陣列中,鍵可以是字串或整數。每個鍵在陣列中都是唯一的,這意味著沒有兩個元素可以具有相同的鍵。關聯陣列中的值可以是任何資料型別,例如字串、數字、布林值、物件,甚至其他陣列。

示例

<?php
$person = array(
   'name' => 'John',
   'age' => 30,
   'city' => 'New York'
);
echo $person['name'];  
echo $person['age'];     
echo $person['city'];  
?>

輸出

John30New York

什麼是順序陣列?

順序陣列,也稱為索引陣列,是一種陣列型別,其中元素被分配數字索引,這些索引表示它們在陣列中的位置。索引從第一個元素的 0 開始,並且對於每個後續元素遞增 1。

在順序陣列中,元素的鍵由 PHP 根據元素新增到陣列的順序自動分配。這些鍵是表示每個元素的位置或索引的整數。

示例

<?php
// Example of sequential array
$arr = array(10,20,30,40);
// 1st element
echo $arr[0] . "
"; // 2nd element echo $arr[1] . "
"; // 3rd element echo $arr[2] . "
"; // 4th element echo $arr[3] . "
"; ?>

輸出

10
20
30 
40

如何在 PHP 中檢查陣列是關聯陣列還是順序陣列

要檢查 PHP 中的陣列是關聯陣列還是順序陣列,可以使用 array_keys() 函式並將生成的鍵陣列與原始陣列進行比較。

Array_keys() 函式

PHP 中的 array_keys() 函式用於從陣列中檢索所有鍵或鍵的子集。它返回一個包含輸入陣列鍵的新陣列。

語法

array_keys() 函式的一般語法為

array_keys(array $array, mixed $search_value = 
null, bool $strict = false): array

引數

$array:要從中提取鍵的輸入陣列。

$search_value (可選):如果提供,array_keys() 將僅返回給定值的鍵。

$strict (可選):確定比較應該是嚴格的 (true) 還是寬鬆的 (false)。預設情況下,它設定為 false,這意味著使用寬鬆比較。

示例

<?php
$array = ['apple', 'banana', 'orange'];

$keys = array_keys($array);

if ($keys !== range(0, count($array) - 1)) {
   // Associative array
   echo 'Associative array';
} else {
   // sequential array
   echo 'Sequential array';
}
?>

輸出

Sequential array

在此示例中,我們有一個包含元素 'apple'、'banana' 和 'orange' 的陣列 $array。我們使用 array_keys() 函式檢索陣列的鍵,然後使用 !== 運算子將這些鍵與從 0 到 count($array) - 1 的數字索引範圍進行比較。如果陣列的鍵 ($keys) 不等於預期的順序索引,則表示該陣列是關聯陣列。在這種情況下,輸出將為“關聯陣列”。如果陣列的鍵與預期的順序索引匹配,則表示該陣列是順序陣列。在這種情況下,輸出將為“順序陣列”。

結論

在 PHP 中,您可以透過檢查陣列的鍵來檢查陣列是關聯陣列還是順序陣列。如果鍵是非數字或不是從 0 開始的順序數字,則該陣列被視為關聯陣列。否則,如果鍵是從 0 開始的順序整數,則該陣列是順序陣列。要執行此檢查,您可以使用 array_keys() 函式檢索陣列鍵並將其與預期模式進行比較。

更新於: 2023-07-28

2K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告