在PowerShell中将数组附加到数组数组

Sco*_*ren 44 arrays powershell

我正在尝试使用位于磁盘上的CSV文件以编程方式在PowerShell中构建一个多维数组.我一直在将数组导入临时变量,然后将数组附加到数组中.而不是数组数组,我得到一个总行数的单个数组.我用较小的数组进行了研究,发现了以下内容:

$array1 = "11","12","13"
$array2 = "21","22","23"
$array3 = "31","32","33"

$arrayAll = $array1, $array2, $array3
$arrayAll.Count # returns 3

$arrayAll = @();
$arrayAll += $array1
$arrayAll += $array2
$arrayAll += $array3

$arrayAll.count # returns 9
Run Code Online (Sandbox Code Playgroud)

构建数组的第一种方法有效但我需要能够使用第二种方法.我该如何解决?

Rom*_*min 83

这是一个常见的问题,数组(和其他集合)可能会"意外地"展开.使用逗号运算符(它使用单个项目生成/强制执行数组并避免展开):

$array1 = "11","12","13"
$array2 = "21","22","23"
$array3 = "31","32","33"

$arrayAll = $array1, $array2, $array3
$arrayAll.Count # returns 3

$arrayAll = @()
$arrayAll += , $array1
$arrayAll += , $array2
$arrayAll += , $array3

$arrayAll.count # returns 3

$arrayAll[1] # gets "21","22","23", i.e. $array2
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.男孩确实Powershell有一些讨厌的"功能". (10认同)
  • 很好的答案.这只是我的意思,这里的答案非常有用. (3认同)

JPB*_*anc 6

不确定我不明白您在寻找什么,但它可以提供帮助。

PS> $arrayAll = New-Object int[][] (3,3)
PS> $arrayAll[0] = $array1
PS> $arrayAll[1] = $array2
PS> $arrayAll[2] = $array3

PS> $arrayAll.Count
3

PS> $arrayAll[1][2]
23
Run Code Online (Sandbox Code Playgroud)

这是一种对数组进行编码的方法。

这是一种对二维数组进行编码的方法

PS> $arrayAll = New-Object 'int[,]' (3,3)
PS> $arrayAll[2,0] = 12
Run Code Online (Sandbox Code Playgroud)