プログラミング言語

【PHP入門⑧】多次元配列 ~初心者でも安心!基礎から学べるプログラミング講座~

プログラミング言語

※前回の講座がまだの人はこちら
【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入門⑨】クラス ~初心者でも安心!基礎から学べるプログラミング講座~

タイトルとURLをコピーしました