PowerShell: 配列を結合する方法

PowerShellで配列を結合する場合は、 主に+演算子や+=演算子を使って行い、 他には*演算子や*=演算子を使って結合することもできます。

それぞれの演算子での配列結合方法を解説します。

+演算子での結合

+演算子では左辺の配列と右辺の配列又は文字列などの単一の値を 結合して配列を作成します。

以下は「配列+配列」の例です。

$arr1 = "a", "b"

$arr2 = "c", "d"

$arr3 = $arr1 + $arr2

Write-Host $arr3  # a b c d

+演算子の右辺に配列ではなく、 文字列等の単一の値を記述して結合することもできます。

$arr1 = "a", "b"

$arr2 = $arr1 + "c"

Write-Host $arr2  # a b c

但し注意点として+演算子の左辺に単一の値を持ってきた場合、 配列の結合にはなりません。 下のコードでは文字列の結合とみなされ、 $arr2の値は文字列"za b"となります。

$arr1 = "a", "b"

$arr2 = "z" + $arr1

$arr2  # za b

$arr2.GetType() # String

下のコードのように+演算子の左辺に数値を記述した場合はエラーが発生します。

$arr1 = 1, 2

$arr2 = 3 + $arr1  # エラー

# エラーメッセージ
Method invocation failed because [System.Object[]] 
does not contain a method named'op_Addition'.

+=演算子での結合

+=演算子は左辺の配列に右辺の配列又は単一の値を結合します。

次のコードは右辺に配列を指定して結合しています。

$arr1 = "a", "b"

$arr2 = "c", "d"

$arr1 += $arr2

Write-Host $arr1

「$arr1 += $arr2」は「$arr1 = $arr1 + $arr2」と同じ意味ですが、 +=演算子を使った方がシンプルに記述できます。

右辺に単一の値を指定する例です。

$arr1 = "a", "b"

$arr1 += "c"

Write-Host $arr1  # a b c

*演算子での結合

*演算子は「配列 * 数値」の形で記述します。 左辺の配列を右辺の数値分だけ繰り返して結合した配列を作成します。

$arr1 = "a", "b"

$arr2 = $arr1 * 3

Write-Host $arr2

# 実行結果
a b a b a b

*=演算子での結合

*=演算子は左辺の配列を右辺の回数分だけ繰り返し、 左辺の配列に代入します。

$arr1 = "a", "b"

$arr1 *= 3

Write-Host $arr1

# 実行結果
a b a b a b
PowerShell