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 确实是一个包含多个子数组的数组,每个子数组持有一组独特的值。这确认了成功创建了一个使用 @() 数组子表达式运算符的空数组的数组。

如何使用 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,显示每个元素作为单独的子数组。

代码输出:

在 PowerShell 中使用 New-Object 和 System.Collections.ArrayList 创建空数组数组

输出确认 $arrayOfArrays 是一个 ArrayList,包含多个子数组,每个持有独特的值集合。这证明了成功创建了一个使用 New-Object cmdlet 和 System.Collections.ArrayList 类的空数组的数组。

如何使用 @{} 哈希表在 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 用户具备了开发强大脚本和自动化的基本技能。