如何解决在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
构建数组的第一种方法可行,但是我需要能够使用第二种方法。我该如何解决?
解决方法
这是一个常见的陷阱,数组(和其他集合)可能会“意外地”展开。使用逗号运算符(它使用单个项目创建/强制执行一个数组,并避免展开):
$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\",\"23\",i.e. $array2
, 不确定我是否理解您在寻找什么,但是它可以提供帮助。
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
这是对数组数组进行编码的一种方法。
这是一种编码二维数组的方法
PS> $arrayAll = New-Object \'int[,]\' (3,3)
PS> $arrayAll[2,0] = 12
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。