配列の要素にアクセスするにはそのインデックスを指定する。
正のインデックス
PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[0]
a
PS C:\> $arr[4]
e
PS C:\> $arr[9]
j
PS C:\> $arr[10]
PS C:\>
この例の場合、配列の構造は次のようになっている。
インデックス | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
値 | a | b | c | d | e | f | g | h | i | j |
上記の例では「10」のインデックスに対応する値は存在しない。
PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $null -eq $arr[10]
True
PS C:\>
負のインデックス
負のインデックスは配列の後方からの数えた位置を示す。
PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[-1]
j
PS C:\> $arr[-4]
g
PS C:\> $arr[-10]
a
PS C:\> $arr[-11]
PS C:\>
この例の場合、配列の構造は次のようになっている。
インデックス | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
値 | a | b | c | d | e | f | g | h | i | j |
正と負のインデックスの混在
正のインデックスと負のインデックスは混在して利用できる。
PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[0]
a
PS C:\> $arr[-1]
j
PS C:\> $arr[2]
c
PS C:\> $arr[-3]
h
PS C:\> $arr[4]
e
PS C:\> $arr[-5]
f
PS C:\>
正のインデックスと負のインデックスを同時に記載すると、この例の場合の配列の構造は次のようになる。
正のインデックス | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
負のインデックス | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
値 | a | b | c | d | e | f | g | h | i | j |
配列のインデックスのまとめ
配列の要素数を n としたとき、有効にその要素にアクセスするにはインデックスに -n から n-1 までの範囲の数値を指定する必要があり、それ以外の数値を指定した場合、返される値は $null となる。
PS C:\> $arr = 'a', 'b', 'c', 'd', 'e'
PS C:\> $n = $arr.count
PS C:\> $n
5
PS C:\> (-$n - 2)..($n + 1) | ForEach-Object { '$arr[{0}]: {1}' -f $_, $arr[$_] }
$arr[-7]:
$arr[-6]:
$arr[-5]: a
$arr[-4]: b
$arr[-3]: c
$arr[-2]: d
$arr[-1]: e
$arr[0]: a
$arr[1]: b
$arr[2]: c
$arr[3]: d
$arr[4]: e
$arr[5]:
$arr[6]:
PS C:\>
上記の例の場合、配列の要素をインデックスを基準とした表に表すと次のようになる。
インデックス | ~ -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 ~ |
値 | $null | a | b | c | d | e | a | b | c | d | e | $null |
理解の補助として表を記載したが、この例の場合の配列の要素数は、あくまで 5 であることに注意すること。
コメント