関連記事
配列とは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
配列とは何か?
分かりやすいイメージで説明すると
通常の変数が「ただの箱」なら、配列は「引き出し付きの箱」といったイメージになります。
※変数については、こちらの記事で詳しく解説しています。
通常の「数値」や「文字列」といった型の変数には、データが1つしか入れられません。
でも、実際のプログラムを作っていると、同じ種類のデータをいくつも1つの箱の中に入れて、まとめて扱いたい場合がよくあります。
そんな時に使うのが、この「配列」です。
変数を「配列型」として定義すれば「ただの箱」から「引き出し付きの箱」になり、複数のデータをまとめて入れることが出来ます。
どんな時に便利?
例えば、データベースに登録されている「社員のリスト」を取得し、全社員に対して何らかの処理を行うようなプログラムを考えてみましょう。
もし、社員が50人いたなら、プログラムはデータベースから50件のデータを取り出し、1件1件のデータを$user1、$user2...$user50までの変数に入れて、処理を行うプログラムに渡します。
これでは、変数を定義するのも、引数を渡すのも大変ですよね。
社員が100人、1000人と増えていったら、変数の定義だけでソースコードが膨大になってしまいます。
しかし、配列を使えば、1つの変数の中にデータをまとめて入れることが出来るので、例えば「$user_list」という配列型の変数を作っておけば、そこに全社員のデータをまとめて入れることが出来ます。
処理プログラムにデータを渡す際も、$user_list変数1つだけを渡すだけで済むのでとても楽ですし、ソースコードも簡略化出来ますね。
このように、データベースから取り出したデータのリストであったりとか、プルダウンリストの選択肢として表示するようなデータのリストは、プログラムの中では配列として扱います。
配列の中はこうなっている
配列はこのように、「キー」と「値」がセットになっており、キーを指定して、値を取り出したり、セットしたりします。
キーは、データを入れた順番に0から番号が振られます。
なお、キーには番号ではなく好きな名前を付けることも出来ます。
これを「連想配列」と言います。
また、配列の中にさらに配列を持たせることも出来ます。
これを「多次元配列」と言います。
配列の使い方
PHPで配列を使う場合は、arrayという関数を使って変数を定義します。
$user_list = array();
これで、$user_listという名前の空の配列が作られます。
配列の末尾にデータを入れる場合はこのような指定を行います。
さらにこれを実行すると、このようにデータが末尾に追加されていきます。
このように、キーを指定して入れることも出来ます。
変数名の[]は、データを出し入れする際に必要ですが、配列変数自体を扱う場合は、通常の変数と同様に[]無しの$user_listで指定します。
例えば、ファンクションの引数に、この配列を渡す場合は
myfunction($user_list);
このようにすればOKです。
これでユーザー3人分のデータがいっぺんにファンクションに渡せます。
なお、このように配列を定義すると同時に、データを入れることも可能です。
連想配列の場合はこのようになります。
実際のWeb開発での使われ方
PHPでは、DBから取り出した複数件のデータは連想配列で取得されます。
例えば、userテーブルにid、nameというカラムがあり、そこからデータを取り出すと、キーがカラム名で、値がデータという形の連想配列で取得されます。
ちなみに、FETCHモードを指定すると、どのような形の連想配列で取得するかをカスタマイズすることも出来ます。
※FETCHモードについては、こちらの記事で詳しく解説しています。
このように、Web開発ではデータベースやWebAPIから取得したデータを扱う際など、配列はかなり頻繁に使うことになります。
ここで1つ、ソースコードを書く際のコツですが
配列変数の変数名には、「s」「list」「array」といったワードを付けて、複数のデータを扱っている配列変数であることを推測出来る名前にするのが、見やすくバグの少ないコードを書くコツです。
例えば、ユーザーのリストを扱う配列なら「$user_list」「$user_array」「$users」といった感じですね。
僕は必ずこのように付けるようにしています。
その変数に、配列のデータが入っているのか、単体のデータが入っているのか、それはどんなデータなのか、このようなことが変数名を見るだけである程度推測出来るとバグの少ないコードになっていきます。
※正しい変数名の付け方については、こちらの記事で詳しく解説しています。
まとめ
配列を上手に扱えるようになると、複雑なデータを処理出来るようになり、プログラミングのレベルがぐっと上がります。
実際の開発ではかなり頻繁に使うことになるので、しっかり理解しておきましょう!