※前回の講座がまだの人はこちら
【PHP入門⑦】連想配列 ~初心者でも安心!基礎から学べるプログラミング講座~
複数の値の管理
フルーツの在庫数に加えて、値段と産地を管理することになりました。
在庫数に加えて、値段と産地の連想配列を作成し、それぞれフルーツの名前をキーにして値を保持する方法が思いつくと思います。
逆に、フルーツの配列を用意して、「在庫数と値段と産地」をキーにしても良いです。
ただ、このままでは管理するデータが増えれば増える程、変数が増えてしまいます。
この配列達をまとめることが出来たらスッキリすると思います。
多次元配列
実は、配列の中に配列を入れることが出来ます。
配列の中に配列?と思うかもしれませんが、配列の中の値が文字列や数値ではなく、配列になっているだけです。
この配列のことを多次元配列と言います。
この図は、配列の中に配列が入っているため、2次元配列と言います。
さらに配列が入ると、3次元配列になります。
2次元配列
先程の値段と産地を管理する方法を2次元配列を使って考えてみます。
今までは、$fruitsという配列にフルーツをキーとして、値に在庫数を入れていました。
値の部分に在庫数ではなく、「在庫数・値段・産地」をキーとした配列を入れることで、一つの変数で全ての値を管理出来ます。
2次元配列の作成
2次元配列を作ってみます。
配列「$apple、$grape、$banana」を$fruitsという配列に入れるイメージです。
$fruits = array( 'apple' => array( 'stock' => 3, 'price' => 200, 'origin' => '青森県' ), 'grape' => array( 'stock' => 5, 'price' => 400, 'origin' => '山梨県' ), 'banana' => array( 'stock' => 21, 'price' => 100, 'origin' => 'フィリピン' ) );
$fruitsという配列の中に、「’apple’、’grape’、’banana’」というキーがあります。
各キーの中に「’stock’、’price’、’banana’」というキーを持った配列が入っており、それぞれ値が入っています。
2次元配列の表示
2次元配列の中身の表示は以下の様に書きます。
echo $fruits['grape']['price'];
echo $fruits['banana']['stock'];
それぞれ「ぶどうの値段」「バナナの在庫」の値を取り出せます。
「’grape’」というキーの中の「’price’」というキーの値を取り出しています。
「’price’」と「’grape’」を入れ替えても値は取り出せないので注意してください。
階層通り順番に書かないと想定している値は取得出来ません。
前回の講座で、配列の表示に便利なforeach文を紹介しました。
2次元配列でも、foreach文を使えば値を全て取り出せます。
foreach ($fruits as $fruit => $fruit_detail) { echo 'フルーツ:'. $fruit . '<br/>'; foreach ($fruit_detail as $key => $value) { echo $key .':'. $value . '<br/>'; } echo '<br/>'; }
foreach文の中に、foreach文が入っています。
外のforeach文は、フルーツを繰り返しています。順番に「’apple’,’grape’,’banana’」を取得して、キーは$fruitに入ります。$fruit_detailには、各キーの中の配列が入ります。
内のforeach文は、フルーツの管理内容を繰り返しています。順番に「’stock’,’price’,’origin’」を取得して、キーは$keyに入り、値が$valueに入ります。
以下の様に表示出来たら想定通りです。
フルーツ:apple
stock:3
price:200
origin:青森県
2次元配列へのデータ追加
2次元配列へデータを追加したい場合は、今までと同様です。
さらに追加で、フルーツの名称を管理したいとします。
ぶどうに巨峰を名称として追加したい場合、以下で出来ます。
$fruits['grape']['name'] = '巨峰';
自分で’name’というキーを作成し、値として「’巨峰’」を入れました。
ここで注意したい点は、’name’を追加したのは’grape’の中のみです。
‘apple’と’banana’には、’name’が存在しないので
echo $fruits['apple']['name'];
この様に表示させようとすると、「キーが存在しない」というエラーになります。
必要なキーは必要な箇所へ追加することを忘れない様にしましょう。
まとめ
今回は、多次元配列を紹介し、2次元配列を作成してみました。
扱いたいデータ量が増えると、3次元4次元と配列も大きくなります。
余裕のある人は、配列を増やした色々試してみてください。
次回講座:クラス
【PHP入門⑨】クラス ~初心者でも安心!基礎から学べるプログラミング講座~