Foreach-объект, возвращающий "не может индексировать в нулевой массив", но отлично работает, когда я копирую каждую строку цикла

У меня есть сценарий, который я концептуализирую, и он вроде как сконцентрирован вокруг этой идеи - выстроить выравнивающие массивы в хеш-таблицы, а затем вызывать их с индексом $_ foreach-object для запуска команды или вывода. с наименьшим количеством написанного избыточного кода.

Я пробовал эту идею так много раз, но, похоже, она не работает. Не уверен, что я просто тупой или что-то еще здесь мне не хватает.

Я могу заставить другие хеш-таблицы и массивы работать с этим методом, но этот вызывает у меня проблемы.

Я сломаю это.

The first array will be the first line
The second array will be the 2nd line...
so on and so forth until the 6th.

каждая строка имеет несколько значений, но каждое из этих значений соответствует тому же элементу, что и над и под ним... представьте себе таблицу Excel... вроде как.

в конце этого массива / хэш-таблицы, я пытаюсь собрать каждый в...

$control = ( 0..5 | % { first[$_] ; second[$_] ; third[$_] ; fourth[$_] ; fifth[$_] ; sixth[$_] } )

Я пробовал каждую перестановку, которую мог придумать, со знаком at, без единицы, бросая контроль в curlies, используя скобки вместо curlies, используя запятые, это просто не похоже на работу. Я также попытался поместить пустой элемент управления =() перед выполнением самого цикла, кажется, ничего не работает... Кажется, я не могу избежать этой ошибки "индекс за пределами массива"

... и только когда я думаю, что я заставил это работать, я вызываю переменную, и она пуста. Нада.

Так что на данный момент это, кажется, работает, но это отстой...

$Control = @{ 0 = ( $first[0] , $second[0] , $third[0] , $fourth[0] , $fifth[0] );
              1 = ( $first[1] , $second[1] , $third[1] , $fourth[1] , $fifth[1] );
              2 = ( $first[2] , $second[2] , $third[2] , $fourth[2] , $fifth[2] );
              3 = ( $first[3] , $second[3] , $third[3] , $fourth[3] , $fifth[3] );
              4 = ( $first[4] , $second[4] , $third[4] , $fourth[4] , $fifth[4] );
              5 = ( $first[5] , $second[5] , $third[5] , $fourth[5] , $fifth[5] );
              6 = ( $first[6] , $second[6] , $third[6] , $fourth[6] , $fifth[6] )}

Я пытаюсь сделать это с наименьшим количеством кода, я просто не уверен, почему этот не работает.

Кстати, если я вызову $control[0] или что-то еще после того, как вы это сделаете, желаемый конечный результат - вывести эти переменные на экран........

Индекс находился вне границ массива. х5 тысяч раз...

1 ответ

Я понял.

$control=@( 0..5 )

0..5 | % { $control[$_]=@($first[$_];$second[$_];$third[$_];$fourth[$_];$fifth[$_])}

не могу поверить, что мне понадобилось так много времени, чтобы понять, что я должен был поместить массив в пустое поле выше... я рад, что решил это, но чувствую себя глупо, потому что не пытался сделать это раньше.

Другие вопросы по тегам