Arrays Powershell在定义的数字之后处理多维数组中的数组

Arrays Powershell在定义的数字之后处理多维数组中的数组,arrays,powershell,Arrays,Powershell,如果跳过第一个数组后需要处理多维数组中的所有数组,我将如何处理 在这种情况下,每个值加上+5。如果我想从第二个数组$mdarr[1]开始,问题在于更新数组内容。所需要的只是一个嵌套循环,用适当的索引处理内部数组中的元素。这样, $mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14)) for($i = 1; $i -lt $mdarr.Length; ++$i) { for($j = 0; $j -lt $mdarr[$i].Length;

如果跳过第一个数组后需要处理多维数组中的所有数组,我将如何处理


在这种情况下,每个值加上+5。如果我想从第二个数组$mdarr[1]开始,问题在于更新数组内容。所需要的只是一个嵌套循环,用适当的索引处理内部数组中的元素。这样,

$mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14))
for($i = 1; $i -lt $mdarr.Length; ++$i) {
    for($j = 0; $j -lt $mdarr[$i].Length; ++$j) {
        $mdarr[$i][$j] += 5
    }
}

$mdarr[1]
10
11
12
13
14
至于最初的工作为什么没有完成,让我们分析一下代码,看看哪里出了问题:

# This starts from 1st element (index 0), which was to be skipped. Bug
for ($i = 0; $i -lt $mdarr.Length; ++$i){

    # Loop counters $ii and $i are confusing, name is almost same
    # What's more, $i is increased instead of $ii. Bug 
    for ($ii = 0; $ii -lt $mdarr[$i].Length; ++$i){
        # This doesn't make sense. It's overwriting the whole 
        # source array-of-arrays with a single value.
        # The array cell was to be updated instead. Bug
        $mdarr = $mdarr[$i][$ii] + 5
    }
}

总而言之,这个想法是存在的。由于索引错误和不适当的分配操作,结果是错误的。尽管如此,修复还是相当简单,因为主要逻辑还可以。

问题在于更新数组内容。所需要的只是一个嵌套循环,用适当的索引处理内部数组中的元素。这样,

$mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14))
for($i = 1; $i -lt $mdarr.Length; ++$i) {
    for($j = 0; $j -lt $mdarr[$i].Length; ++$j) {
        $mdarr[$i][$j] += 5
    }
}

$mdarr[1]
10
11
12
13
14
至于最初的工作为什么没有完成,让我们分析一下代码,看看哪里出了问题:

# This starts from 1st element (index 0), which was to be skipped. Bug
for ($i = 0; $i -lt $mdarr.Length; ++$i){

    # Loop counters $ii and $i are confusing, name is almost same
    # What's more, $i is increased instead of $ii. Bug 
    for ($ii = 0; $ii -lt $mdarr[$i].Length; ++$i){
        # This doesn't make sense. It's overwriting the whole 
        # source array-of-arrays with a single value.
        # The array cell was to be updated instead. Bug
        $mdarr = $mdarr[$i][$ii] + 5
    }
}

总而言之,这个想法是存在的。由于索引错误和不适当的分配操作,结果是错误的。尽管如此,修复还是非常简单,因为主逻辑还可以。

我遇到了一种情况,如果数组只包含一个值,这将给我一个错误<代码>无法索引到System.Int32类型的对象。需要调整什么?结果表明我对循环的输入有缺陷。我必须将命令包装在
@()
中才能返回数组而不是标量对象。我遇到了这样一种情况:如果数组只包含一个值,这将给我一个错误<代码>无法索引到System.Int32类型的对象。需要调整什么?结果表明我对循环的输入有缺陷。我必须将命令包装在
@()
中才能返回数组而不是标量对象。