Powershell обрабатывает массивы в многомерном массиве после определенного числа - PullRequest
0 голосов
/ 04 октября 2018

если мне нужно обработать все массивы в многомерном массиве после пропуска первого, как бы я поступил?

в этом случае добавив + 5 к каждому значению.Что если я захочу начать со второго массива $ mdarr [1] <</p>

cls
$mdarr = @()
$i = @()
$ii = @()
$mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14))

for ($i = 0; $i -lt $mdarr.Length; ++$i){
    for ($ii = 0; $ii -lt $mdarr[$i].Length; ++$i){
    $mdarr = $mdarr[$i][$ii] + 5
    }
}
write-host $mdarr

, то здесь так много неправильного.результат, который я ищу, должен быть:

((0,1,2,3,4),(10,11,12,13,14),(15,16,17,18,19))

как бы это сделать?

1 Ответ

0 голосов
/ 04 октября 2018

Проблема в обновлении содержимого массива.Все, что нужно, это вложенный цикл для обработки элементов во внутренних массивах с соответствующей индексацией.Примерно так:

$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
    }
}

Подводя итог, идея была на месте.Из-за ошибок индексации и неправильной операции назначения результат был неверным.Тем не менее, исправить это довольно просто, так как основная логика была в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...