ディスク上にあるCSVファイルを使用して、プログラムでPowerShellで多次元配列を作成しようとしています。配列を一時変数にインポートしてから、配列に配列を追加しています。配列の配列の代わりに、合計行数を持つ単一の配列を取得します。私は小さなアレイでそれを解決し、次のことを見つけました:
$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
配列を構築する最初の方法は機能しますが、2番目の方法を使用できる必要があります。どうすれば修正できますか?
これはよくある落とし穴です。配列(および他のコレクション)が「予期せず」展開される可能性があります。カンマ演算子を使用します(単一の項目で配列を作成/強制し、展開を回避します)。
$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
何を探しているのかわかりませんが、助けになるでしょう。
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
これは、配列の配列をコーディングする方法です。
2次元の配列をコーディングする方法を次に示します
PS> $arrayAll = New-Object 'int[,]' (3,3)
PS> $arrayAll[2,0] = 12