次の方法で共有


about_Arrays

トピック
    about_Arrays

簡易説明
    データ要素を格納するためのコンパクトなデータ構造について説明します。

詳細説明
    配列は、同じ型のデータ要素の集まりを格納するためのデータ構造です。Windows PowerShell は、
    データ要素として string、int (32 ビット整数)、long (64 ビット整数)、bool (ブール値)、
    byte、およびその他の Microsoft .NET Framework オブジェクト型をサポートしています。

  配列を作成して初期化する
    配列を作成して初期化するには、変数に複数の値を割り当てます。
    配列に格納されている値はコンマで区切られ、変数名との間には代入演算子 (=) が入ります。

    たとえば、22、5、10、8、12、9、80 という 7 つの数値 (int) を含む $A という名前の配列を作成する
    には、次のように入力します。

        $A = 22,5,10,8,12,9,80

    配列の作成および初期化は、範囲演算子 (..) を使用して行うこともできます。たとえば、5 ~ 8 の
    値を含む "$B" という名前の配列を作成して初期化するには、次のように入力します。

        $B = 5..8

    この結果、$B には 4 つの値 (5、6、7、および 8) が含まれます。

    データ型が指定されていない場合、各配列はオブジェクト配列 (型: object[]) として作成されます。配
    列のデータ型を判定するには、GetType() メソッドを使用します。たとえば、配列 $a のデータ型を判
    定するには、次のように入力します。

        $a.gettype()

    型が厳密に指定された配列 (特定の型の値のみを含むことができる配列) を作成するには、変数を配列
    型 (string[]、long[]、int32[] など) としてキャストします。配列をキャストするには、角かっこで囲んだ
    配列型を変数名の前に入力します。たとえば、4 つの整数 (1500、2230、3350、および 4000) を含む $ia 
    という名前の 32 ビット整数配列を作成するには、次のように入力します。

        [int32[]]$ia = 1500,2230,3350,4000

    この結果、配列 $ia に格納できるのは整数だけになります。

    Microsoft .NET Framework でサポートされている任意の型にキャストされる配列を作成できます。
    たとえば、Get-Process がプロセスを表現するために取得するオブジェクトは 
    System.Diagnostics.Process 型です。型が厳密に指定されたプロセス オブジェクトの配列を作成する
    には、次のコマンドを入力します。

        [Diagnostics.Process[]]$zz = Get-Process

    コマンドレット、関数、またはステートメントの出力を使用して配列に値を設定することができます。
    たとえば、次のステートメントは、現在のコンピューター上で実行されている、"co" で始まるプロセス
    を含む配列を作成する例です。

        $LocalProcesses = get-process co*

    ステートメントが単一のプロセスしか取得しない場合、$LocalProcesses 変数は配列にはなりません。
    コマンドによって配列が作成されるようにするには、次の例のように、配列のサブ式演算子である @ 
    を使用します。

        $LocalProcesses = @(get-process co*)

    コマンドから返されるのが単一のプロセスであっても、$LocalProcesses 変数は配列です。配列に単一
    のメンバーしか存在しない場合でも、他の配列と同じように扱うことができます。たとえば、これに他
    のオブジェクトを加算することができます。詳細については、「about_Operators」を参照してください。

 
  配列を読み取る
    $A や $a などの変数名を使用して配列を参照できます。大文字と小文字は区別されません。

    配列のすべての要素を表示するには、配列名を入力します。次にその例を示します。

    $a

    位置 0 から始まるインデックスを使用して、配列の要素を参照できます。インデックス番号は角かっ
    こで囲みます。たとえば、配列 $a の最初の要素を表示するには、次のように入力します。

        $a[0]

    配列 $a の 3 番目の要素を表示するには、次のように入力します。

        $a[2]

    負の数値を指定した場合、配列の最後からカウントされます。たとえば、"-1" は配列の最後の要素を
    参照します。配列の最後の 3 つの要素を表示するには、次のように入力します。

        $a[-3..-1]

    しかし、このような表記を使用する場合には注意が必要です。

        $a[0..-2]

    このコマンドは、配列の最後の要素以外のすべての要素を参照するのではなく、配列の最初、最後、
    および最後から 2 番目の要素だけを参照します。
   
    範囲演算子を使用すると、配列内のすべての値のうちのサブセットを表示できます。
    たとえば、インデックス位置 1 ~ 3 のデータ要素を表示するには、次のように入力します。

        $a[1..3]

    プラス演算子 (+) を使用すると、配列内の要素の範囲とリストを組み合わせることができます。たと
    えば、インデックス位置 0、2、および 4 ~ 6 の要素を表示するには、次のように入力します。

        $a[0,2+4..6]

    配列に含まれる項目の数を判定するには、配列の範囲と length プロパティを組み合わせます。たと
    えば、インデックス位置 2 から、配列の最後までの要素を表示するには、次のように入力します。

        $a[2..($a.length-1)]

    インデックスは位置 0 から始まるため、長さは -1 に設定します。したがって、配列に含まれる要素
    が 3 つ (1、2、3) の場合、3 番目の要素のインデックスは、配列の長さよりも 1 だけ小さい 2 にな
    ります。


    Foreach ループ、For ループ、While ループなどのループ構文を使用して、配列の要素を参照するこ
    ともできます。たとえば、Foreach ループを使用して配列 $a の要素を表示するには、次のように入力
    します。

        foreach ($element in $a) {$element}

    Foreach ループは配列内の各要素を反復処理し、配列の終わりに到達するまで配列の各値を返します。

    配列内で処理した要素ごとにカウンターの値を増加させる場合は、For ループが便利です。たとえ
    ば、For ループを使用して、配列内の値を 1 つおきに返すには、次のように入力します。

        for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

    While ループを使用すると、定義した条件が満たされなくなるまで配列の要素を表示できます。たとえ
    ば、配列 $a でインデックスが 4 より小さい要素を表示するには、次のように入力します。

        $i=0
        while($i -lt 4) {$a[$i]; $i++}

    配列のプロパティとメソッド (Length プロパティと SetValue メソッドなど) について調べるには、
    Get-Member コマンドレットの InputObject パラメーターを使用します。配列を Get-Member にパ
    イプすると、配列内のオブジェクトに関する情報が表示されます。InputObject パラメーターを使用す
    ると、配列に関する情報が表示されます。

    配列 $a のプロパティとメソッドについて調べるには、次のように入力します。

    get-member -inputobject $a


  配列を操作する
    配列の要素の変更、配列への要素の追加、および 2 つの配列に含まれる値をさらに別の配列として結
    合する操作を実行できます。

    配列に含まれる特定の要素の値を変更するには、配列名および変更する要素のインデックスを指定
    し、代入演算子 (=) を使用して、その要素の新しい値を指定します。たとえば、配列 $a に含まれる 
    2 番目の項目 (インデックス位置 1) の値を 10 に変更するには、次のように入力します。

        $a[1] = 10

    配列の SetValue メソッドを使用して値を変更することもできます。次の例では、配列 $a の 2 番目
    の値 (インデックス位置 1) が 500 に変更されます。

        $a.SetValue(500,1)

    += 演算子を使用すると、既存の配列に要素を追加できます。
    この演算子は、既存の値に対する加算を行います。この演算子を配列の要素に対して使用した場合、
    その要素の値への加算が行われます。この演算子を配列自体に対して使用した場合、その配列に値が
    追加されます。たとえば、値が 200 の要素を配列 $a に追加するには、次のように入力します。

        $a += 200

    配列から要素を削除するのは簡単ではありませんが、既存の配列から選択された要素のみを含む新し
    い配列を作成できます。たとえば、配列 $a から、インデックス位置 2 の値を除くすべての要素を使
    用して配列 $t を作成するには、次のように入力します。

        $t = $a[0,1 + 3..($a.length - 1)]

    2 つの配列を 1 つの配列に結合するには、プラス演算子 (+) を使用します。次の例は、2 つの配列
    を作成して結合し、その結果として作成された配列を表示しています。

        $x = 1,3
        $y = 5,9
        $z = $x + $y

    この結果、配列 $z には 1、3、5、および 9 が含まれます。

    配列を削除するには、Remove-Item コマンドレットを使用して、配列を含む変数を削除します。
    次のコマンドは、Variable: ドライブの要素 "a" を指定しています。

        remove-item variable:a

    (Variable: ドライブの詳細については、Variable プロバイダーのヘルプ トピックを参照してくだ
    さい。)


関連項目
    about_Assignment_Operators
    about_Hash_Tables
    about_Operators
    about_For
    about_Foreach
    about_While