ググって見ても配列のわかりやすい記事があまりなかったので、
小学校に例えてみることにしました。
※わかりやすさ重視でいろいろ説明をはしょっています。
目次
PHPの配列の使い方〜わかりやすさ重視〜
『PHP』に限らず、ほとんどのプログラミング言語には、『変数』という機能があります。
『変数』というのはざっくりいうと『箱』の事で、
『箱』をつくって、その中に好きな文字や数字を入れて、取り出しやすくしたものです。
※『PHP』の『変数』は、頭に ドルマークが必要になります。
例えばとある学校の、1組をプログラムで表したいとしたら、
1 2 3 |
$seito_1 = '本田'; $seito_2 = '香川'; $seito_3 = '長友'; |
と書いたとして、
1 |
echo $seito_1 |
と書くと、『本田』と表示されます。
ただこの書き方だと、
例えばクラスに30人もいたら変数だらけになってしまいます。
なので、1つの箱にまとめて要素をつっこめる方法があります。
それが『配列』です。
例えば $seito という変数(箱)をつくって、その中にまとめて生徒の名前を追加します。
1 |
$seito = ['本田','香川','長友','乾','大迫']; |
という形で、 変数(箱)に入れる値を、[]で囲みます。
呼び出す時には、
1 |
print_r($seito[2]); |
とすると、長友くんが呼び出されます。
と思いがちですが、プログラミングは0から数える
事が多く、配列も0から数えるつくりになっていますので、
1,2,3,4,5 ではなく、
0,1,2,3,4 の番号で指定する形ですね。
PHPの連想配列と多次元配列の使い方〜小学校のクラスが複数あったら
小学校であればもちろん、2組や3組がある学校もありますよね。
そんな場合でも役に立つのが『配列』です。
実は、『配列』の中にさらに『配列』を入れ子にすることができます。(多次元配列といったりします。)
コードにするとこんな感じです。
1 2 3 4 5 6 7 8 |
$seito = [ '1kumi' => [ '本田','香川','長友','乾','大迫' ], '2kumi' => [ '川島','柴崎','槙野','長谷部','酒井' ] ]; |
$seito という変数(箱)の中に, 1組と2組で分けて、それぞれ生徒の名前をまとめています。
2組の2番目の人を呼び出す時はこうやって指定すると、
1 |
print_r($seito['2kumi'][1]); |
柴崎くんが呼び出されます。
1 |
print_r($seito['2kumi'][2]); |
にすると、槙野くんですね。
PHP 配列(添字配列)と連想配列の違い
$seito という変数の後に、 [‘2kumi’] という文字と、[1] という文字を指定していますが、
PHPでは、
配列の中のどの場所?
というのを指定するために、文字や数字を使うことができます。
配列のキーが数字:配列(添字配列)・・指定なしならこちら
配列のキーが文字:連想配列・・文字から内容を連想しやすい
指定しないと自動的に0から数字が割り振られます。
PHPの連想配列と多次元配列〜小学校の学年が複数あったら
これまでは1学年だけを例にしていましたが、
小学校となると1年生だけではなく、2年生もいますよね。
勘のいい人ならわかると思いますが、
配列の中に配列を入れる事で、学年も表現できます。
コードはこんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$seito = [ '2nen' => [ '1kumi' => [ '遠藤','内田','松井','岡崎','中村' ], '2kumi' => [ '今野','駒野','大久保','楢崎','闘莉王' ] ], '1nen' => [ '1kumi' => [ '本田','香川','長友','乾','大迫' ], '2kumi' => [ '川島','柴崎','槙野','長谷部','酒井' ] ] ]; |
新たに 2nen や 1nen という項目が増えましたが、その中身は前のコードと同じですね。
例えば2年2組の闘莉王くんを呼び出す時はこんな感じで指定します。
1 |
print_r($seito['2nen']['2kumi'][4]); |
簡単ですね。
これを応用すれば、
例えば30人のクラスがあって、3組あって、6年生まであったとしたら、
30×3×6 = 180 人分の情報になりますが、
『配列』をうまく使えば、
1つの『変数』に180人分の情報をまとめることができます。
また、配列は何段階も作ることができます。例えば・・
PHPの連想配列と多次元配列〜小学校が複数あったら
仮に熊本小学校と、福岡小学校があったとしたら、
熊本小学校の、
2年の、
1組のだれだれ、
というのも1つの変数(箱)の中に入れることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$seito = [ 'fukuoka' => [], 'kumamoto' => [ '2nen' => [ '1kumi' => [ '遠藤','内田','松井','岡崎','中村' ], '2kumi' => [ '今野','駒野','大久保','楢崎','闘莉王' ] ], '1nen' => [ '1kumi' => [ '本田','香川','長友','乾','大迫' ], '2kumi' => [ '川島','柴崎','槙野','長谷部','酒井' ] ] ] ]; |
呼び出しはこんな感じ。
1 |
print_r($seito['kumamoto']['2nen']['1kumi'][2]); |
これで松井君が呼び出せます。(fukuokaの方ははしょってますがこれでも動きます。)
PHP連想配列の覚え方〜補足
という場合ももちろんできます、配列ならね。
コードはこんな感じです。
1 2 3 4 5 6 7 8 9 10 |
$seito = [ 0 => [ 'name' => '本田', 'age' => '7' ], 1 => [ 'name' => '香川', 'age' => '6' ], ]; |
呼び出しはこう。
1 |
print_r($seito[1]['age']); |
1番目のage(年齢) なので 6 と表示されます。
もちろん数字ではなく、文字でも指定できます。
1 2 3 4 5 6 7 8 9 10 |
$seito = [ 'honda' => [ 'name' => '本田', 'age' => '7' ], 'kagawa' => [ 'name' => '香川', 'age' => '6' ], ]; |
呼び出しはこう。
1 |
print_r($seito['kagawa']['age']); |
読む分にはこっちの方がわかりやすいかもですね。
PHPの連想配列・多次元配列〜実際のプログラミングでは
実際に小学校の情報をプログラミングで管理しようと思ったら、
生徒達の情報をPHPコードで直書きするのではなく、
Mysqlなどのデーターベースを使って情報を登録しておいて、
PHPからデータベースにつないで情報を表示する、という形になるかと思います。
指定の仕方も変数をいれることが多いので、こういった文字列になるかなと思います。
$seito[$gakko][$gakunen][$kumi][$number]
プログラミング的には数字の方がやりやすいので、
$seito[1][2][0][2]);
というような形を想定しつつプログラミングを組んだりします、が、
なんて思ったりすることもあるので、その場合は配列の中身を整理してみるといいかもですね。
まとめ PHPの配列や連想配列・多次元配列について
実はこの記事は、 #入江開発室 の #voyage というWebアプリケーションのソースコードを見ていた時に、
配列の理解が浅いなと思ったことがきっかけで、まとめてみることにしました。
PHPに限らずプログラミングの規模が大きくなるにつれ、
配列・連想配列・多次元配列は必須になるので、
ぜひしっかり把握した上で、プログラミングライフを楽しみたいものですね。
『PHP(Laravel)』ではこんな記事も読まれています。
1. 【PHP】【laravel】CSVエクスポートの方法〜5つのポイント〜2. 【PHP】オブジェクトと連想配列の違いについて調べてみた【初心者向け】
3. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】
4. 【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめてみた【初心者向け】
5. 【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
6. 【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】
7. 【Laravel5.5】Webアプリケーションを作るためのゆるめの環境構築編【Node.js】【npm】【Vue.js】【初心者向け】
8. 【PHP】2次元(多次元)配列でデータ取得したいならarray_columnがめっさ便利
この記事へのコメントはありません。