配列とは、複数の要素を一つの入れ物に入れるというものでした。
連想配列や多次元配列は、普通の配列の強化バージョンみたいなものです。
なのでそもそも配列について「ん?」な場合、先に下記の記事をご一読ください。
配列について
配列がバージョンアップすることで、さらに深みのある、めっちゃプログラミングやってるっぽい感じになります!
連想配列とは?
配列は入れた要素に対して、順番に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件もなかったら「記事がありません」とテキストのみを出力するようにする。
といった感じです。
少しややこしいですが、絶対に覚えておきたい内容です!
焦らず、繰り返し練習して、少しずつ覚えていきましょう!