PowerShell: 多次元配列の作成、データの追加・削除
PowerShellで2次元配列以上の多次元配列を実現する場合 2つの方法があります。 ここではジャグ配列と呼ばれる配列の中に配列を作成する方法で 多次元配列を作成し、 さらにデータを追加・削除する方法を紹介します。
サンプルデータとして、 次のような3行2列の表を配列にします。 列は番号と名前の2列です。
番号 | 名前 |
---|---|
1 | 田中 |
2 | 佐藤 |
3 | 山田 |
多次元配列を作成
配列の中に配列を宣言することで多次元配列になります。
$arr = @((1, "田中"),(2, "佐藤"),(3, "山田"))
1行で記述してもいいのですが、 データが多い時は次のように 複数行で記述した方が見やすくなります。
$arr = @( (1, "田中"), (2, "佐藤"), (3, "山田") ) Write-Host $arr # 実行結果 1 田中 2 佐藤 3 山田
要素の参照
要素を参照する場合は[]をつなげて使用します。 例えば3行目・2列目の値を知りたい場合は「$配列名[2][1]」と記述します。
Write-Host $arr[2][1] # 実行結果 山田
要素値の変更
要素値を変更したい場合は代入演算子を使い、 変更したい要素を左辺に、値を右辺に記述します。
$arr[2][1] = "高山"
データの追加
最初の3行分のデータに次の1行分のデータを追加します。
番号 | 名前 |
---|---|
4 | 鈴木 |
+=演算子を使って、多次元配列$arrの末尾に1行分のデータを追加します。
重要なのは@の前にあるカンマ(,)を付け忘れないことです。
カンマがないとうまく追加されません。
最後にLengthプロパティで配列の要素数が4になっていることが確認できます。
$arr = @((1, "田中"),(2, "佐藤"),(3, "山田")) $arr += ,@(4, "鈴木") Write-Host $arr Write-Host ("要素数: " + $arr.Length) # 実行結果 1 田中 2 佐藤 3 山田 4 鈴木 要素数: 4
試しに@の前にカンマ(,)を付けずにデータを追加してみます。 要素数が5となって、 番号と名前が別々の行に追加されているのがわかります。
$arr = @((1, "田中"),(2, "佐藤"),(3, "山田")) $arr += @(4, "鈴木") Write-Host $arr Write-Host ("要素数: " + $arr.Length) foreach ($item in $arr) { Write-Host $item } # 実行結果 1 田中 2 佐藤 3 山田 4 鈴木 要素数: 5 1 田中 2 佐藤 3 山田 4 鈴木
データの削除
データを削除するには配列のスライス機能を使います。
(参考記事:配列のスライス)
先頭行を削除する場合は次のように記述します。
$arr = @((1, "田中"),(2, "佐藤"),(3, "山田")) Write-Host $arr $arr = $arr[1..($arr.Length - 1)] Write-Host $arr Write-Host ("要素数: " + $arr.Length - 1) # 実行結果 1 田中 2 佐藤 3 山田 2 佐藤 3 山田 要素数: 2
最終行を削除する場合は次のように記述します。
$arr = @((1, "田中"),(2, "佐藤"),(3, "山田")) Write-Host $arr $arr = $arr[0..($arr.Length - 2)] Write-Host $arr Write-Host ("要素数: " + $arr.Length) # 実行結果 1 田中 2 佐藤 3 山田 1 田中 2 佐藤 要素数: 2
(まとめ記事: PowerShell 配列)