Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. PHP入門編 - 配列の使い方

配列の使い方

みなさまどうも。いかがお過ごしでしょうか。

さて、これまで配列の記述方法とか注意点とかを紹介してきました。しかし、肝心の配列の使用例があんまり紹介できていません。このままだと「配列ってどこでどういう時に一体誰と使えばいいんだろう?」ってなってしまいますよね。

というわけでございますので意味があるようなないような、そんなプログラムをひとつ、配列を使って書いてみて配列という概念の強力さを体験してみましょう。配列は変数をひとまとめにしたものである、というイメージを持っておいて下さい。

題して『ボカロの人数を自動出力してくれるプログラム』です。

言うまでもありませんが別にボカロじゃなくてもいいです。でもボカロがいいんです。というわけでボカロでいきます。だっておっさん(弊社スタッフ)の人数なんかを数えてもなんにも面白くな

まず配列を使わず変数を使用して実装する場合をみてみましょう。適当に変数を定義してボーカロイドのみなさんのお名前をいれてあげます。

<?php
$vocaloid1 = '初音ミク';
$vocaloid2 = 'IA';
$vocaloid3 = '鏡音リン';

さて、このボーカロイドのみなさんの人数は3人です。この人数を出力したいわけでございますが、これまで当記事で紹介した記述を総動員すると以下みたいな感じになりますよね。

<?php
$vocaloid1 = '初音ミク';
$vocaloid2 = 'IA';
$vocaloid3 = '鏡音リン';

echo 'ボーカロイドの人数は3人です。';

これを実行させると「ボーカロイドの人数は3人です。」って出力してくれるわけなんですが、なんだかあんまりプログラミングっぽくないですね。定義した変数も全く使ってないし、しかも『3人』って人数をプログラマーが数えちゃってます。処理だけ書いて演算はコンピューターに任せる、というのがプログラミングですのでそういう観点からみてもなんだか残念な感じですね。

PHPでは特定の変数の数を数えてくれる処理はありません。他のプログラム言語でもないことが多いです。なので変数だけでは『ボカロの人数を自動出力してくれるプログラム』はうまく構築できませんね。

では改めまして配列を使用して構築してみましょう。配列を定義するところからいきます。配列名はなんでもいいのですが『vocaloids』にしてみます。

<?php
$vocaloids = [];

そしたらボーカロイドのみなさんのお名前を『[]』を使って配列に追加していきましょう。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';

ちなみに言語によっては配列を使用するまえに配列の定義をしなくてはならなかったりしますが、PHPでは事前の配列定義は必要ありません。ただし、「ここで定義しているよー」とアピールできるので読みやすいように定義文を記述しておく、というのもありです。状況に合わせて使い分けてあげてください。

<?php
// $vocaloids = []; // 配列定義文をコメントアウトしてます。
$vocaloids[] = '初音ミク'; // このようにいきなり配列として扱うことができます。
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';

さて、問題はここからです。今度は変数ではなく配列なのでデータ(ボーカロイドさんのお名前)がうまい具合にひとまとめになっています。なのでこの配列の数を出力できれば人数を出力していることと同じになりますよね。そこで登場するのが『count()』という関数です。これを使用すると配列の個数を取得することができます。ちょっと試してみましょう。記述方法は『count()』の『()』の中に数えたい配列をいれてあげればOKです。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';

echo count($vocaloids); // 配列『vocaloids』の要素数を『count()』で取得して『echo』で出力します。

これを実行させるとこうなります。

3

配列の個数をちゃんと出力してくれていますね。あとは『count()』と文字連結を組み合わせて文言を調整してあげればOKです。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。';

先ほどとは打って変わってプログラミングっぽくなりましたね。ちゃんと『ボカロのメンバー数(配列数)を自動で数えて出力してくれるプログラム』になっていますのでボカロのメンバーが追加されたりしてもちゃんと出力内容を変えてくれます。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';
$vocaloids[] = '鏡音レン'; // 文字列『鏡音レン』を追加してみます。

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。'; // ちゃんと4人と出力してくれます。

さて、ではこの勢いでこのプログラムをちょこっとアップデートしてみましょう。今はボカロのみなさんの人数だけを教えてくれるプログラムなわけでございますが、最後に追加したメンバーの名前も同時に出力してくれるようにしてみます。

まず配列の最後の要素を出力する感じでシンプルに書くと以下のような感じになりますよね。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';
$vocaloids[] = '鏡音レン';

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。';
echo '最後のメンバーは' . $vocaloids[3] . 'です。';

一応目的は達成しているのですが、このプログラムはちょっと微妙です。というのも、メンバー数(配列数)が変更されるたびに『$vocaloids[3]』のインデックス番号(この場合だと[3]のところ)を書きなおさなくてはいけないのでプログラミング的にあんまりよろしくない感じですね。最後のメンバー(配列の最後の要素)を自動で出力してくれる感じにしたいです。

ではここで配列の応用技を紹介します。なんと配列のインデックス番号を入れる『[]』の中には変数を入れることができます。さらに式とか入れちゃうと演算とかもできちゃいます。つまりこんな感じです。以下は変数を使ったサンプルです。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';
$vocaloids[] = '鏡音レン';
$cnt = 3; // 配列の最後の要素のインデックス番号を変数『cnt』に代入。

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。';
echo '最後のメンバーは' . $vocaloids[$cnt] . 'です。'; // 変数『cnt』の値を使って配列『vocaloids』の要素を出力。

というわけですので配列の『[]』の中に自身の最後の要素のインデックス番号を取得してくれる式を入れてあげれば最後のメンバーを自動出力できそうですね。

察しの良い方はもうお分かりだと思いますが配列数を取得できる『count()』と組み合わせればOKです。

ただし、ひとつ注意点があります。上記の配列『vocaloids』の『count()』で取得した数値は『4』でした。しかし最後のメンバーを出力するときに記述しているインデックス番号は『3』です。

ここでちょっと思い出してみましょう。配列のインデックスは『0』から数え始めますね。ということは配列の最後の要素のインデックスを取得するには『count()』で取得した数値から『-1』する必要があるという事です。

この『-1』というのが少しややこしいですね。ちなみに『count()』で取得できる数値はちゃんと『数値』なのでそのまま計算とか演算することができます。

ということで配列『vocaloids』のインデックスに『count($vocaloids) - 1』を入れればOKです。自分自身の配列数を『count()』で取得してそれをまた自分自身の配列のインデックスに使うという慣れないとちょっと頭がこんがらがってしまいそうな感じですが頑張ってください。以下が完成形です。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';
$vocaloids[] = '鏡音レン';

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。';
echo '最後のメンバーは' . $vocaloids[count($vocaloids) - 1] . 'です。';

これを実行させると以下のテキストが返って来ます。

ボーカロイドの人数は4人です。最後のメンバーは鏡音レンです。

バッチリですね。では試しに新しいメンバー、『巡音ルカ』ちゃんを追加してみましょう。

<?php
$vocaloids = [];
$vocaloids[] = '初音ミク';
$vocaloids[] = 'IA';
$vocaloids[] = '鏡音リン';
$vocaloids[] = '鏡音レン';
$vocaloids[] = '巡音ルカ';

echo 'ボーカロイドの人数は' . count($vocaloids) . '人です。';
echo '最後のメンバーは' . $vocaloids[count($vocaloids) - 1] . 'です。';

これを実行するとこうなります。

ボーカロイドの人数は5人です。最後のメンバーは巡音ルカです。

配列に要素を追加するとそれに合わせて配列数と最後の要素がちゃんと変更されていますね。これでOKです。

『count()』と同じように配列数を数えてくれる『sizeof()』という関数があります。

『sizeof()』は『count()』と全く同じ処理をするのでお好きな方を使用してOKです。PHPではこのような類似関数がいっぱいあったりします。

というわけで以上となりますがいかがでしたでしょうか。ほんの一例ですが配列はこんな感じで使用します。配列の数に合わせて適切な処理をさせる、というのは基本的な『アルゴリズム』になりますのでよく使われる手法になります。

『アルゴリズム』とはプログラムにおいて目的の処理をさせるための手順のことです。一言で言うと演算方法といった感じになります。

プログラムにおいては「最短の手順で処理させて目的を達成する」というのが理想だったりしますので、著者も複雑な処理を超コンパクトなプログラムで構築できたときは「自分自身にうっとり良い仕事したなぁ...」という気持ちになります。

腕の良いプログラマーさんはこの『アルゴリズム』の構築が上手い人が多いです。

後の記事で紹介するfor文などでは配列がいっぱい出てきますのでそちらでも色々な使い方が学べると思います。なのでちょっとまだ自信がなくても気にせずバシッと先の記事に進んでしまってOKかと思います。

次の記事では『関数』について色々とやっていきます。ではではこの辺で。またお会いしましょう。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。