Powershell 二维数组 foreach 循环

问题描述 投票:0回答:1

目前我在函数中有一个 for every 。当我在两种不同的场景中调用它时很奇怪。

如果二维数组有多个并要求每个数组的第一个槽,那么它会正确输出。

例如:

$packManagers = @( # (Name, executable, Path)
    @("PowerShell Core", "pwsh", "Microsoft.Powershell"),
    @("Git", "git", "Git.Git"),
    @("NVM", "nvm", "CoreyButler.NVMforWindows"),
    @("Python", "py", "Python3")

输出

- Powershell Core
- Git
- NVM
- Python

但是当我只输出一个值时,它开始遍历唯一值内的所有项目并获取第一个字符。 例如:

$packScoop = @( # (Name, executable, Path)
    @("Scoop", "scoop", "get.scoop.sh")
)

输出

- S
- s
- g

我也尝试使用以下方法进行一些测试,但输出与预期不同。

代码:

foreach ($curr in @(@("HI", "Bi", "Try"))) {
    Write-Host "$($curr[0]) - $($curr[1]) - $($curr[2])"
}

预期:

HI - Bi - Try

实际:

H - I - 
B - i -
T - r - y
powershell multidimensional-array foreach
1个回答
0
投票

使用单个项目创建的集合的集合通常会被压扁(其他人很可能会向您解释原因)

如果您要制作单项数组:请使用

@(@(<#content#>))
 代替 
,@(<#content#>)

foreach ($curr in ,@("HI", "Bi", "Try")) {
    Write-Host "$($curr[0]) - $($curr[1]) - $($curr[2])"
}

尽管我建议习惯使用

List
而不是数组,因为它们可以解决很多问题。

© www.soinside.com 2019 - 2024. All rights reserved.