cheshire-boy

PowerShellの基本文法

第3回 配列の【変更・追加・削除】を30分で攻略! - PowerShellで配列デビュー

投稿日:2016年10月16日 更新日:

こんにちは。チェシャ男です。(-皿-)

本連載「PowerShell で配列デビュー」では、入門者向けに配列について解説します。

第1回では(一次元)配列について、第2回では連想配列(ハッシュテーブル)について、それぞれ解説しました。

ここまで解説した内容で、配列の宣言方法と参照の方法のは理解できたと思います。第3回では、これらをもう少し応用して、要素の変更追加・削除を学んでいきましょう。

スポンサーリンク

一次元配列の操作

一次元配列の操作は特に難しいことはなく、要素の参照時と同様に”添字(インデックス)”を指定して行います。

また、"+ (プラス演算子)"を使うことで配列の結合も可能です。

配列の要素の値を変更する

配列の要素を変更する場合は、添字を用いて要素を参照し

"= (代入演算子)"

を使って値を変更します。

変更する → 新しい値を代入する

という考え方ですね。あなたが変数の操作ができるなら同じようなものだと思ってください。

配列の要素を削除する場合は、"$null” を代入しましょう。

ただし、あくまでも指定した要素を削除するだけです。一次元配列は固定長の配列、つまり大きさが変わらない配列なので、大きさ(要素数)が変わったりインデックス番号(添字)が繰り上がることはありません。

どうでしょうか。基本的な代入による変更方法はわかりましたか?

配列の要素に新しい値を追加する

要素に新しい値を追加は、+= 演算子を使う方法です。

1つ注意点として、覚えておいてください。"+=" 演算子による配列の追加は

要素の追加に伴い、配列を再構成する

という挙動を取ります。(入門時点では特に気にする必要はないかもしれませんが…)

先ほども述べたように基本的に一次元配列は固定長なので、大きさが変わるときはもう一度配列を作り直しているんですね。大量の要素を追加する場合などは、かなり処理時間を必要としますので注意してください。

配列と配列を結合する

+ (プラス演算子)”を用いることで、配列と配列を結合することができます。配列の結合というのは、

配列1(1,2,3) +  配列2(4,5,6) => 配列3(1,2,3,4,5,6)

のように、結合される側(配列1)の要素の後に結合する側(配列2)の要素がくっついた、新しい配列(配列3)を作ることを指します。

このように2つの配列を結合することができます。

配列のメソッドやプロパティ使ってみる

演算子による方法だけではなくメソッドを使用することもできます。

「メソッドって何?」という場合や「どんなメソッドやプロパティが用意されているの」という場合は、Get-Memberコマンドレットのページで確認し知らべてみてください。

まずは、配列の ”SetValue” メソッドを使用して値を変更します。

$配列.SetValue( <変更する値> , <インデックス番号> )

→配列の<インデックス番号>番目を<変更する値>に変更する

注意する点は、”添字”を指定するため ”0” 番目からカウントする点です。

他には、"Add" メソッドなどがあります。

$配列.Add( <追加する要素> )

という使い方をします。

しかし、以下の実行結果を見るとわかるように配列は固定長です。よって、メソッドによる要素の追加ができないためエラーが起きてしまいます。

さらには、"Count" プロパティで大きさ(要素の数)を求めたり、”Clear” メソッドで要素を初期化することも可能です。色々試して覚えてみることをおススメします。

連想配列(ハッシュテーブル)の操作

連想配列の操作は慣れてくると直感的な操作が可能で非常に扱いやすいですが、初めて触ると場合は少し戸惑うかもしれません。

しかし、基本的な考え方は一次元配列と同じです。要素の関係をキーバリューに置き換えて考えることが大切です。

連想配列の要素の値を変更する

連想配列名(変数名)と変更を加える要素のキー(名前)を指定することで値を変更します。

". (ドット演算子)"を用いた参照方法でも、"[] (角かっこ)"による参照方法でも変更は可能です。

連想配列の要素に新しい値を追加する

値を追加する場合は、連想配列名(変数名)に新しく追加する要素のキー(名前)を指定します。

". (ドット演算子)"を用いた参照方法でも、"[] (角かっこ)"による参照方法でも変更は可能です。

”Add” メソッドで要素に値を追加する

一次元配列(Collections.Array)では ”Add” メソッドによる追加ができませんでしたが、連想配列(Collections.Hashtable)では可能です。

$配列名.Add("キー名", "追加する値")

を指定します。

ちなみに、既に存在するキーに対して ”Add" しようとすると、下記のようにエラーが表示されます。

”Remove” メソッドで要素を削除する

Remove” メソッドを用いることで、指定した要素を削除します。使い方は簡単で、

$配列名.Remove("キー名")

のように、キー名(名前)を指定するだけです。

実行結果を見て一次元配列との大きな違いに気づきましたか?

要素を削除したら、配列の大きさが変わっている

という大きな違いがあるんです!連想配列は固定長の配列ではないため、要素が削除されればその分大きさが小さくなるんですね。

”Contains”メソッドで要素の存在を確認する

Contains” メソッドを使用することで、指定したキー名に対する値が存在するかを確認することができます。

存在を事前に確認することで、”Add" メソッドのエラーを回避するなんてことができますね、

$配列名.Contains("キー名")

のように、キー名(名前)を指定するだけです。

ここまで紹介した3回の記事で、あなたは PowerShell における配列の基礎を身に着けることが(きっと)できました。配列ビギナーはこれで卒業ですね。

次回、第4回は補足として「多段階配列と多次元配列」についてご紹介します。お楽しみに!

チェシャ男おススメ!PowerShell 入門者の必携本 (-皿-)

本記事をお読みくださったあなたに、チェシャ男が実際に PowerShell の勉強に使っているイチ押しの書籍を紹介します!

こちらの書籍ではリファレンス情報だけではなく、PowerShell の基礎知識基本文法など約700ページにわたって解説しています!

初心者の場合、ネットでふらふらと情報を漁るよりは効率よく勉強ができると思いますよ!

本サイトでの Powershell 学習のお供に是非ご活用ください(*´皿`*)

疑問点等ございましたらお気軽にコメントください!

スポンサーリンク

-PowerShellの基本文法
-, , , ,

Copyright© 【チェシャわら】PowerShellとは、から学ぶ入門者の教科書-脱コマンドプロンプト- , 2018 AllRights Reserved Powered by micata2.