Я пытаюсь создать матрицу n * m , которая будет иметь следующий дизайн:
- Импортировать файл CSV, содержащий пары имени приложения и имени проекта.
- Генерация матрицы * m, построенной из динамически именованных и сгенерированных массивов, первое значение которых является именем проекта.
- Сравните каждую возможную комбинацию приложения и проекта с исходным CSV и заполните матрицу истинным или ложнымоператоры для каждого сравнения, которое существует или не существует.
Первый цикл, который я использую, возвращает ошибку, которую я не понимаю, что динамически генерируемое имя массива уже существует.
Код:
$Source = (Import-Csv "C:\Users\m012407\Desktop\DataBase 42\DB--Data\APPcsv - Copy.csv" -Delimiter ";" -Header ("Application", "Project"))
# An Array to hold each project by name.
$projectName = $source | Select-Object Project -Unique
$ProjectArray = @("")
foreach ($project in $projectname) {
$ProjectArray += $Project.Project
}
# An Array to hold each application by name.
$ApplicationName = $source | Select-Object Application -Unique
$ApplicationArray = @()
foreach ($App in $ApplicationName) {
$ApplicationArray += $App.Application
}
# An Array to hold the Combined values of each EXISTING application and project combination.
$ComparisonArray = @()
$ComparisonSource = foreach ($Value in $Source) {
$ComparisonString = $Value.Project + $Value.Application
$ComparisonArray += $ComparisonString
}
# The Matrix, eventually n*m as each dynamically generated array is added to it
$Matrix = @()
##loop1 Now defunct
#for ($iP = 0; $iP -le $ProjectArray.count; $iP ++) {
# New-Variable -Name Row$iP -Value @($ProjectArray[$iP])
# $Matrix += $_
#}
Конечно, этот код еще не завершен, но во время тестирования он постоянно не может правильно добавить массивы Row$iP
в матрицу вТаким образом, я могу назвать матрицу и дисплей.Сообщение об ошибке гласит, что переменная row$iP
(для каждой попытки строки 1-20) уже существует.
Я искал другие посты и руководства в Интернете и не уверен, что я сделал, что помешало бы тому, что у меня сейчас работает.Очевидно, я упускаю что-то простое или не совсем понял что-то, поэтому любая помощь будет принята с благодарностью.
Благодаря помощи Ansgar Wiechers я немного изменил свой код для работы на этом моторе:
$Matrix = New-Object 'Object[,]' $ProjectArray.Count, $ApplicationArray.Count
for ($i=0; $i -lt $ProjectArray.Count; $i++) {
for ($j=0; $j -lt $ApplicationArray.Count; $j++) {
$Matrix[$i, $j] = $ProjectArray[$i] + $ApplicationArray[$j]
if ($Matrix[$i, $j] -match $comparisonArray) {
$Matrix[$i, $j] = $True
} else {
$Matrix[$i, $j] = $False
}
}
}
К сожалению, каждое значение матрицы ложно.Я буду продолжать подключаться к этому, хотя.