PHPの連想配列(Key-Value Array)の基礎をおさえよう

PHPには値だけを格納する通常の配列の他に、キーと値とをペアにした連想配列というものがあります。この連想配列という仕組みはPHPに限らず多くのプログラミング言語で採用されており、うまく使うことによって高速で可読性の高いプログラムが実現できます。

この記事を参考にPHPでの連想配列の使い方を覚えて実際のプログラム開発に役立てていきましょう。

連想配列の基本

通常の配列(Array)の仕組み

配列とは1つの変数に複数の値を格納する仕組みをいいます。変数はよく「入れ物」になぞらえることがありますが、配列は複数の入れ物が連なっているイメージを持ってもらえると良いかと思います。

あらかじめ入れ物の数を決めておいて、それぞれ割り振られた番号(インデックス)をキーに値を入れていきます。インデックスは通常0から始まります。

下図の例では配列にテストの点数を格納していると思ってください。インデックス0には98点、1には82点と、順番に値を格納していくのが配列です。

 

 

連想配列の仕組み

連想配列では、そのインデックス番号の代わりに任意の名前を付けることができます。通常の配列の場合は「インデックス0が鈴木さん」とあらかじめ覚えておいてプログラムの中で紐づけさせる必要がありますが、連想配列の場合はインデックスにその名前を付与できるのです。

以下の例では、生徒の名前の付いた連想配列にテストの点数を格納している模式図です。

 

キーと値が1対1の関係がある場合は、連想配列を使ったほうがプログラムがよりシンプルになると思います。連想配列をうまく使いこなすことでより効率的なプログラミングが可能になります。

連想配列の初期化([ ]とArray関数)

PHPでの連想配列の初期化には2つの方法があります。

1つは[ ]で括ったケース、もう1つはArray関数を使うケースです。どちらも同じく連想配列の初期化ができますのでお好みで選んでください。

初期化の際にはキーと値とを「=>」で組み合わせます。以下が初期化の例です。

 

KeyからValueを出力する方法

初期化した連想配列からデータを出力する場合は以下のような構文になります。

 

こちらがプログラム例となります。

 

以下のように山田さんの値(点数)を出力します。

 

foreachを使ったKeyとValueの出力方法

値の出力方法

foreach文を使ってすべての値を順番に出力させることができます。

以下のような構文で配列変数$scoreから順に値を$value変数に格納してくれます。

 

以下が使用例です。

 

出力結果はこちらです。$valueで受け取った値を順番に出力していることがわかるかと思います。

 

KeyとValueの出力方法

次に値だけでなくキーも出力できるようにしましょう。以下が構文となります。

 

以下が使用例です。山田さんから順番にキーと値を出力してくれます。

 

出力結果は以下のとおりです。

 

いろいろな関数を使った応用

PHPでは連想配列に関係する便利な関数が用意されています。これらを知ることで連想配列をうまく使いこなしていきましょう。

in_array関数による値の存在確認

in_array関数で値の存在を確認することができます。

 

もしヒットすればtrueを返してくれるので、if文との相性が良いです。以下は「82点」という値が存在しているかを確認する例です。

 

array_key_exists関数によるKeyの存在確認

array_key_exists関数でキーの存在を確認することができます。

 

in_array関数と同じくヒットすればtrueを返してくれます。以下は「佐藤」というキーが存在しているかを確認する例です。

 

array_keys関数によるKey一覧の取得

連想配列に格納されているすべてのキーを取得したい場合はarray_keys関数を使用します。

以下は、連想配列$scoreのすべてのキーを$keysに格納した例です。$keysは通常の配列となります。

 

$keysを出力すると以下のとおりになります。

 

next関数、prev関数で配列ポインタを移動する

次の例は、他のプログラミング言語ではあまり見られない機能ですが、配列ポインタを順に移動してくれる関数群です。

current関数は現在の位置を示します。next関数で次の要素に移動し、prev関数で1つ戻ってくれます。

 

以下が出力例です。鈴木さんから山田さんに進んでまた鈴木さんに戻ってくれていることがわかるかと思います。

 

これらをどのように使うかはいろいろ考えられますが、1つの例としてwhile文を使ってすべてのキーを順番に出力することができます。ただ、コメント文にもあるようにnextがないと無限ループに陥るので注意しましょう。

 

こちらが出力例です。

 

まとめ

いかがでしょうか。

今回はPHPの連想配列の使い方の基礎について紹介しました。連想配列はデータをうまく使いこなすための便利な仕組みです。適切に利用することで効率的なプログラミングが可能になりますのでしっかり学んでいきましょう。

 

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?