HOWTO · PowerShell

如何在 PowerShell 中創建一個空的陣列的陣列

本文演示了我們如何創建一個空數組來存儲子數組。我們將首先討論創建和賦值給數組的基本概念,最後看看我們如何創建空數組。

PowerShell,以其多功能的腳本能力,提供了幾種方式來創建和操作陣列。

一個常見的需求是創建一個可以容納其他陣列的空陣列。當您需要將數據組織成多維結構時,這種情況經常會出現。

在這篇文章中,我們將探索在 PowerShell 中創建空陣列的陣列的各種方法。

理解 PowerShell 中的陣列

在深入創建空陣列的陣列之前,了解 PowerShell 中的陣列基礎知識是至關重要的。PowerShell 中的陣列是一種數據結構,用於存儲元素的集合。

這些元素可以是任何數據類型,陣列可以根據需要動態調整大小以容納新元素。PowerShell 提供了多種操作陣列的方法,包括創建、訪問和修改其內容。

以下是 PowerShell 中創建陣列的基本示例:

$myArray = @(1, 2, 3, 4, 5)
$myArray

在這個例子中,$myArray 被賦值為包含五個整數的陣列。

輸出:

PowerShell 中的陣列

在 PowerShell 中,陣列可以包含任何類型的元素,包括其他陣列。稱為不規則陣列的陣列的陣列是一種數據結構,由多個陣列組成,其中主陣列的每個元素保存另一個陣列。

這種結構使您能夠以多維格式存儲異質數據,從而更容易根據不同的標準管理和訪問元素。

PowerShell 中的陣列是零索引的,這意味著第一個元素使用索引 0 訪問,第二個元素使用索引 1,以此類推。PowerShell 陣列可以動態調整大小,允許在管理數據時具有靈活性。

如何使用 @() 陣列子表達式運算子在 PowerShell 中創建空陣列的陣列

@() 陣列子表達式運算子是在 PowerShell 中用於各種陣列操作的多功能工具,包括創建空陣列。當用於創建空陣列的陣列時,它初始化了一個能夠容納其他陣列作為其元素的陣列容器。

通過使用此運算子和逗號 , 來分隔元素,我們可以構建一個陣列結構,其中每個元素本身都是一個陣列。

讓我們看一個代碼示例,說明如何使用 @() 陣列子表達式運算子創建空陣列的陣列。

$arrayOfArrays = @()

在這裡,我們使用 @() 陣列子表達式運算子初始化了一個名為 $arrayOfArrays 的空陣列。這創建了一個能夠容納其他陣列的空陣列容器。

由於在 @() 運算子內沒有提供任何元素,因此結果陣列是空的。

向空陣列添加陣列

一旦您創建了空陣列的陣列,您可以將單個陣列作為元素添加到其中。這通常使用 += 運算子來完成,該運算子將一個元素附加到現有的陣列中:

$arrayOfArrays += , (1, 2, 3)
$arrayOfArrays += , (4, 5)
$arrayOfArrays += , (6, 7, 8, 9)

Write-Host "First Array:"
$arrayOfArrays[0]

Write-Host "Second Array:"
$arrayOfArrays[1]

Write-Host "Third Array:"
$arrayOfArrays[2]

在這段代碼中,我們向 $arrayOfArrays 添加了子陣列。為了確保每個子陣列被視為單一元素,我們在前面加上了一個逗號 ,

這阻止了 PowerShell 將子陣列連接成單個陣列。每個子陣列都被放在括號中並由逗號分隔。

我們添加了三個不同長度的子陣列以展示靈活性。

最後,我們顯示 $arrayOfArrays 的內容以驗證其結構和內容。PowerShell 輸出陣列,顯示每個元素作為單獨的子陣列。

代碼輸出:

在 PowerShell 中使用 @() 創建空的數組數組

輸出顯示 $arrayOfArrays 確實是一個包含多個子陣列的陣列,每個子陣列保存一組不同的值。這確認了使用 @() 陣列子表達式運算子在 PowerShell 中成功創建空陣列的陣列。

如何使用 New-Object Cmdlet 和 System.Collections.ArrayList 類在 PowerShell 中創建空陣列的陣列

我們可以使用的另一種創建空陣列的陣列以存儲結構化數據的方法是 New-Object cmdlet 與 System.Collections.ArrayList 類結合使用。

PowerShell 中的 System.Collections.ArrayList 類提供了一種靈活的動態數組似的數據結構。通過利用 New-Object cmdlet,我們可以實例化此類的實例以創建空陣列。

隨後,我們可以將子陣列作為元素添加到這個陣列的陣列中。這種方法允許進行動態調整大小和有效管理陣列,適合於各種腳本場景。

讓我們看一下如何使用這種方法創建空陣列的陣列:

$arrayOfArrays = New-Object System.Collections.ArrayList

在這裡,我們使用 New-Object cmdlet 來實例化 System.Collections.ArrayList 類的新實例。這創建了一個能夠容納其他陣列的空陣列容器。

變量 $arrayOfArrays 現在引用了這個空的 ArrayList 對象。

訪問陣列的陣列的元素

創建空陣列後,我們現在可以根據需要訪問和操作它的元素:

$arrayOfArrays.Add(@(11, 12, 13))
$arrayOfArrays.Add(@(14, 15))
$arrayOfArrays.Add(@(16, 17, 18, 19))

Write-Host "First Array:"
$arrayOfArrays[0]

Write-Host "Second Array:"
$arrayOfArrays[1]

Write-Host "Third Array:"
$arrayOfArrays[2]

在這段代碼中,我們向 $arrayOfArrays ArrayList 對象添加了子陣列。我們使用 ArrayList 對象的 .Add() 方法將子陣列附加到陣列中。

每個子陣列都放在 @() 中,以確保其被視為單一元素。我們添加了三個不同長度的子陣列,以展示這種方法的靈活性。

最後,我們顯示 $arrayOfArrays ArrayList 對象的內容,以驗證其結構和內容。PowerShell 輸出 ArrayList,顯示每個元素作為單獨的子陣列。

代碼輸出:

使用 New-Object 和 System.Collections.ArrayList 在 PowerShell 中創建空的數組數組

輸出確認 $arrayOfArrays 是一個 ArrayList,包含多個子陣列,每個子陣列保存不同的值組。這展示了使用 New-Object cmdlet 和 System.Collections.ArrayList 類在 PowerShell 中成功創建空陣列的陣列。

如何使用 @{} 哈希表在 PowerShell 中創建空陣列的陣列

在 PowerShell 中,哈希表(@{})提供了一種方便的方式來存儲鍵值對。雖然通常用於鍵值對,但我們也可以利用哈希表通過將每個鍵與空陣列關聯來創建空陣列的陣列。

這種方法提供了一種清晰的組織結構來管理多個陣列,並允許輕鬆訪問和操作陣列元素。

以下是如何使用 @{} 哈希表語法創建空陣列的陣列:

$arrayOfArrays = @{}

向陣列的陣列添加元素

現在我們已經使用哈希表方法創建了空陣列的陣列,我們可以根據需要訪問和操作其元素:

$arrayOfArrays["Array1"] += @(1, 2, 3)
$arrayOfArrays["Array2"] += @(4, 5)
$arrayOfArrays["Array3"] += @(6, 7, 8, 9)
$arrayOfArrays

在這段代碼中,我們向 $arrayOfArrays 內的空陣列添加了子陣列。我們使用陣列索引通過其鍵("Array1""Array2""Array3")訪問每個空陣列,然後使用 += 運算子附加子陣列。

每個子陣列都放在 @() 中,以確保其被視為單一元素。

最後,我們顯示 $arrayOfArrays 哈希表的內容以驗證其結構和內容。PowerShell 輸出哈希表,顯示每一對鍵值對,其中的值是包含子陣列的陣列。

代碼輸出:

在 PowerShell 中使用 @{} 創建空的數組數組

輸出確認 $arrayOfArrays 是一個哈希表,包含三個鍵("Array1""Array2""Array3"),每個鍵都與包含不同值組的陣列關聯。

結論

總而言之,在 PowerShell 中創建空陣列的陣列為管理腳本和自動化任務中的複雜數據結構提供了靈活性和多樣性。

我們探索了三種實現此目的的不同方法:使用 @() 陣列子表達式運算子、New-Object cmdlet 與 System.Collections.ArrayList 類以及重新利用 @{} 哈希表語法。每種方法都有其優缺點,適合不同的偏好和需求。

@() 陣列子表達式運算子提供了一種簡潔直接的方法,利用原生 PowerShell 語法有效地創建空陣列。而 New-Object cmdlet 及 System.Collections.ArrayList 類則提供動態調整大小和管理能力,適合需要頻繁操作陣列的場景。

最後,雖然重新利用 @{} 哈希表語法不太傳統,但在某些上下文中提供了簡單性和可讀性。

無論選擇何種方法,掌握創建空陣列的陣列為 PowerShell 用戶提供了開發穩健腳本和自動化所需的基本技能。