初心者コーダーのための
HTML/CSS JavaScript PHP WordPress
難しい言葉や概念より、実践重視の入門ブログ
PHP

【PHP】連想配列の定義と出力【多次元配列】

【PHP】連想配列・多次元配列 配列の強化バージョン!連想配列と多次元配列

配列とは、複数の要素を一つの入れ物に入れるというものでした。
連想配列や多次元配列は、普通の配列の強化バージョンみたいなものです。

なのでそもそも配列について「ん?」な場合、先に下記の記事をご一読ください。
配列について

配列がバージョンアップすることで、さらに深みのある、めっちゃプログラミングやってるっぽい感じになります!

連想配列とは?

配列は入れた要素に対して、順番に0から番号が振り当てられていましたね。

連想配列は、番号が振り当てられない代わりに、番号に変わる好きな名前を振り当てることができます。
この番号に変わる好きな名前のことを「キー」と言います。

連想配列は、以下のように定義します。

$変数名 = [
    'キー1' => '配列に入れたいもの1',
    'キー2' => '配列に入れたいもの2',
    'キー3' => '配列に入れたいもの3'
];

では実際に定義してみましょう。

サンプルコード

$articleという変数を作成し、そこに記事のタイトルとカテゴリー、記事の内容が入っています。

<?php
    $article = [
        'title' => '記事のタイトル',
        'category' => 'お知らせ',
        'content' => '記事の内容が入ります。'
    ];
?>

連想配列の出力

この場合もforeachで出力することは可能なのですが、ただ順番に出力していくだけでは、連想配列にした意味がありません。

せっかく番号に変わる名前の「キー」を設定したので、この「キー」を使って出力をしていきます。
出力方法は通常の配列を単品で出力する場合とほぼ同じで、番号の部分がキーの名前に変わるだけです。

$変数名['キーの名前']

注意点として、キーはクォーテーションで囲むというお決まりがあります。

それでは、先ほどのサンプルを出力していきましょう。

サンプルコード

先ほどの配列を、それっぽく出力してみます!

<?php
    $article = [
        'title' => '記事のタイトル',
        'category' => 'お知らせ',
        'content' => '記事の内容が入ります。'
    ];
?>

<h2><?php echo $article['title']; ?></h2>
<p>カテゴリー:<?php echo $article['category']; ?></p>
<p><?php echo $article['content']; ?></p>

そしてそして!

さらにこの連想配列を多次元配列化してパワーアップしていきましょう!
たぎりますね!

多次元配列とは?

実は、配列の中にさらに配列を入れることができるんです。
これを多次元配列と呼びます。

先ほど、連想配列のサンプルで、「タイトル」「カテゴリー」「本文」の3つのキーが用意されたブログ記事っぽい連想配列を用意しました。
出力もしましたが、記事って1つだけじゃないですよね。

この連想配列を、通常の配列に複数入れていくことで、複数の記事が格納された配列になります!

定義も少しややこしいのですが、それに伴い出力もちょっとだけややこしくなります。
ちょっとだけね。

通常の配列をforeach文で反復させ、かつ1サイクル毎に連想配列のキーで記事のタイトルなどを出力していくという形になります。

<!-- 多次元配列の定義 -->
<?php
    $article = [
        [
            'title' => '記事1のタイトル',
            'category' => 'お知らせ',
            'content' => '記事1の内容'
        ],
        [
            'title' => '記事2のタイトル',
            'category' => 'ブログ',
            'content' => '記事2の内容ですよ'
        ],
        [
            'title' => '記事3のタイトル',
            'category' => '重要',
            'content' => '記事3のとっても重要な内容'
        ]
    ];
?>

<!-- 多次元配列の出力 -->
<?php foreach($article as $e): ?>
    <h2><?php echo $e['title']; ?></h2>
    <p>カテゴリー:<?php echo $e['category']; ?></p>
    <p><?php echo $e['content']; ?></p>
<?php endforeach; ?>

なんだかすごく、っぽい!
そんな気がしませんか?

実際の現場では

先ほどのサンプルコードで、「タイトル」「カテゴリ」「本文」の3つの情報をもった3つの記事を出力しました。

実際の現場では、この出力をさらにif文の中に入れたりします。

実際のブログでは、そもそも記事が存在しない場合がある。
そのため、if構文を用いて、もし記事が1件でもあれば出力、そしてもし記事が1件もなかったら「記事がありません」とテキストのみを出力するようにする。
といった感じです。

少しややこしいですが、絶対に覚えておきたい内容です!
焦らず、繰り返し練習して、少しずつ覚えていきましょう!