web-dev-qa-db-fra.com

Ajouter un tableau à un tableau de tableaux dans PowerShell

J'essaie de créer un tableau multidimensionnel dans PowerShell par programmation à l'aide de fichiers CSV situés sur le disque. J'ai importé le tableau dans une variable temporaire, puis ajouté le tableau au tableau. Au lieu d'un tableau de tableaux, j'obtiens un seul tableau avec le nombre total de lignes. Je l'ai travaillé avec des tableaux plus petits et j'ai trouvé ce qui suit:

$array1 = "11","12","13"
$array2 = "21","22","23"
$array3 = "31","32","33"

$arrayAll = $array1, $array2, $array3
$arrayAll.Count # returns 3

$arrayAll = @();
$arrayAll += $array1
$arrayAll += $array2
$arrayAll += $array3

$arrayAll.count # returns 9

La première méthode pour construire le tableau fonctionne, mais je dois pouvoir utiliser la deuxième méthode. Comment puis-je réparer ça?

44

C'est un piège courant, les tableaux (et autres collections) peuvent être déroulés "de manière inattendue". Utilisez l'opérateur virgule (il crée/applique un tableau avec un seul élément et évite le déroulement):

$array1 = "11","12","13"
$array2 = "21","22","23"
$array3 = "31","32","33"

$arrayAll = $array1, $array2, $array3
$arrayAll.Count # returns 3

$arrayAll = @()
$arrayAll += , $array1
$arrayAll += , $array2
$arrayAll += , $array3

$arrayAll.count # returns 3

$arrayAll[1] # gets "21","22","23", i.e. $array2
83
Roman Kuzmin

Je ne suis pas sûr de comprendre ce que vous recherchez, mais cela peut vous aider.

PS> $arrayAll = New-Object int[][] (3,3)
PS> $arrayAll[0] = $array1
PS> $arrayAll[1] = $array2
PS> $arrayAll[2] = $array3

PS> $arrayAll.Count
3

PS> $arrayAll[1][2]
23

C'est une façon de coder un tableau de tableau.

Voici un moyen de coder un tableau de deux dimensions

PS> $arrayAll = New-Object 'int[,]' (3,3)
PS> $arrayAll[2,0] = 12
4
JPBlanc