遍历锯齿数组

时间:2018-11-09 03:18:42

标签: powershell scripting jagged-arrays

我正在学习Powershell脚本,现在我试图遍历由2个值数组组成的数组,同时仅打印出第一个值。

例如,采用以下数组;

$array = (("fizz", "buzz"),
          ("foo", "bar"))

我希望能够打印出第一个值,所以fizzbuzz

现在,我有以下代码;

Foreach ($a in $array)
{
    Write-Host $a[0]
}

我应该得到的是fizz,但是我得到的是fizz buzz [0]

谢谢

2 个答案:

答案 0 :(得分:1)

您需要将多维数组视为具有行和列的表,如下所示:

enter image description here

因此在您要获取第一行的前两列的示例中,您想要的是

$array[0][0]
$array[0][1]

您可以通过运行以下命令进行检查:

Write-Host $array[0][0]
Write-Host $array[0][1]

您正在做的是遍历每一行并为每一行打印出列0。

Foreach ($a in $array)
{
    Write-Host $a[0]
}

这就是说$ array中的foreach行打印出第0列。要使您的代码按预期工作,您需要将$array更改为$array[0]

Foreach ($a in $array[0])
{
    Write-Host $a
}

这将为您提供预期的结果,并读为第0行打印列中的foreach列。但是,循环是不必要的,因为您只需使用以下命令即可获得相同的结果

Write-Host $array[0]

这只是打印出整行。

答案 1 :(得分:0)

您可以使用每个维度一个索引来处理单个数组项。与您的示例数组,以下将给出每个轴的第一项...

'{0}; {1}' -f $array[0][0], $array[1][0]

输出...

fizz; foo