首頁 >後端開發 >php教程 >如何可靠地確定 PHP 陣列是否為順序清單?

如何可靠地確定 PHP 陣列是否為順序清單?

Linda Hamilton
Linda Hamilton原創
2024-12-20 12:14:09519瀏覽

How Can I Reliably Determine if a PHP Array is a Sequential List?

區分關聯數組和順序PHP 數組

PHP 本質上將所有數組識別為關聯數組,這使得區分行為類似列表的數組具有挑戰性。為了解決這個問題,我們探索了一種可靠的方法來確定陣列是否符合列表的條件。

列表與關聯數組

  • 列表( Sequential Array): 僅包含從 0開始的數字鍵,形成一個
$sequentialArray = [
    'apple', 'orange', 'tomato', 'carrot'
];
  • 關聯數組: 由字串和數字鍵組成,允許更通用的資料組織。
$assocArray = [
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'veg1' => 'tomato',
    'veg2' => 'carrot'
];

在PHP 8.1 和中識別列表超越

PHP 8.1 引入了array_is_list() 來方便地檢查數組是否是列表:

array_is_list($sequentialArray); // true

早期PHP版本的遺留解決方案

為了迎合 8.1 之前的 PHP版本,我們可以定義一個自訂的function:

function array_is_list(array $arr)
{
    if ($arr === []) {
        return true;
    }
    return array_keys($arr) === range(0, count($arr) - 1);
}

測試函數

var_dump(array_is_list([])); // true
var_dump(array_is_list(['a', 'b', 'c'])); // true
var_dump(array_is_list(["0" => 'a', "1" => 'b', "2" => 'c'])); // true
var_dump(array_is_list(["1" => 'a', "0" => 'b', "2" => 'c'])); // false
var_dump(array_is_list(["a" => 'a', "b" => 'b', "c" => 'c'])); // false

透過利用這些方法,開發者可以有效區分關聯數組和順序數組,從而實現更精確、更有效率的數組在他們的PHP 應用程式中處理。

以上是如何可靠地確定 PHP 陣列是否為順序清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn