今回は、PHPの配列と連想配列、foreachについて解説します。
配列を最初に学ぶときって、いまいち用途が見えてこないので、理解もしずらい。
40代でプログラミングを学び始めた私も「arrayって、アレ、何??」と、つまづきました。
しょーもないダジャレでスイマセン・・・
「最初にこう説明してくれたらなぁ」、という気持ちをこめて、解説していきます。
配列って何?
配列とは、複数の変数に番号を付けて、整理しやすくしたもの。
たとえば、こんなふうに集まった状態の子供がいるとします。
うーん。
覚えにくい名前。
こんなとき、番号が振ってあると便利ですよね。
「1番の子、こっちきてー」と呼べば、権左衛門くんが来てくれるわけです。
でも、番号がついていると「1番の子、前にでてきてー。」と言えばよいので、非常に効率的。
こんなふうに変数に番号を付けて、ひとつずつ整理できる状態にするのが配列です。
配列の記述方法
PHPでの配列のコードの書き方は、次のとおりです。
実際に先ほどの子供たちを配列にすると、次のようになります。
1 2 3 4 5 |
$kids = [ '権左衛門', '吉右衛門', '左馬之助' ]; |
権左衛門くんを表示するときは、次のように番号でOK。
1 |
echo $kids[0]; |
ここでひとつ注意点があります。
配列はゼロから始まります。
つまり権左衛門くんは「0」番、その次の吉右衛門くんは「1」番となります。
連想配列って何?
次に連想配列について。
先ほどは、配列を使えば番号を振って、整理しやすくなると説明しました。
ただ番号よりも、文字で整理したほうが分かりやすいことも多々あります。
たとえば、こちらのテストの点数を管理する場合など。
・ゆうじ 95点
・さくら 60点
番号を割り振るより、名前と点数をセットにしておいたほうが分かりやすいですよね。
このように、状況に応じて好きなように名前をつける配列の方法を「連想配列」と呼びます。
この時、名前をキー、その中に入る値をバリューを呼びます。
上記の例では、はなこ、ゆうじ、さくら、といった名前がキー、テストの点数がバリューです。
構文の書き方は、こちら。
上記のテスト結果を実際のPHPコードにすると、次のようになります。
1 2 3 4 5 |
$test_score = [ 'はなこ' => '80点', 'ゆうじ' => '90点', 'さくら' => '60点' ]; |
ゆうじくんの点数を表示したい場合は、次のようにします。
1 |
echo $test_score['ゆうじ']; |
foreach構文って何?
配列と連想配列を使うとデータの保存が便利にできます。
ただ配列データがいっぱいあるとき、すべて呼び出して処理するのは大変ですよね。
こんな時に便利なのがforeach構文です。
foreach構文を使えば、配列の中のデータをひとつずつ、自動で呼び出してくれます。
構文の書き方はこちら。
先ほどのテスト結果をforeachを使って呼び出すと、次のようになります。
1 2 3 4 5 6 7 8 9 10 |
$test_scores = [ 'はなこ' => '80点', 'ゆうじ' => '90点', 'さくら' => '60点' ]; foreach ($test_scores as $test_score) { echo $test_score.'<br>'; } |
foreachを使って、$test_scoresの中の一つずつの値を$test_scoreとしてセット。
これをひとつずつ表示してね、と命令しています。
このコードを実行すると、次の値が得られます
90点
60点
1回の処理で、3人のテスト結果をすべて表示できるので、便利ですよね。
キーとバリューを両方表示したいとき
なお、上記は点数(バリュー)だけを表示する書き方です。
foreachを使って名前(キー)と点数(バリュー)を一緒に表示することも可能です。
そのためには、次のように構文を書きます。
実際のPHPコードサンプルはこちら。
1 2 3 4 5 6 7 8 9 10 |
$test_scores = [ 'はなこ' => '80点', 'ゆうじ' => '90点', 'さくら' => '60点' ]; foreach ($test_scores as $name => $test_score) { echo $name.'の点数は'.$test_score.'です。<br>'; } |
実行すると、次の表示となります。
ゆうじの点数は90点です。
さくらの点数は60点です。
補足:配列の書き方にはarrayとブラケットの2種類ある
最後に、コードの書き方について補足説明をいれます。
今回ご紹介した配列の書き方は【ブラケット】と呼ばれます。
新しいPHPのバージョンでは、この形で配列を記述します。
ただ、実は先ほどの書き方以外にも、もうひとつ書き方があります。
それがこちらの【array】を使った方法。
取り出すときは、先ほどと同じです。
コードは、次のようになります。
1 2 |
$kids = array('権左衛門', '吉右衛門','左馬之助'); echo $kids[0]; |
ほとんどのブラウザ環境はブラケットに対応しているので、この書き方でよいかと思います。
ただ教材を見ている限り、array(アレイ)を使った配列の書き方も多いので、こちらも書いておきます。
まとめ
◆配列とは、複数の変数に番号を付けて、整理しやすくしたもの。
◆連想配列は、番号ではなく、文字情報を使って管理できる。
◆foreach構文を使えば、配列データを使って、効率よく処理を実行できる
◆配列は実際にPHPでシステムを作るときにも多用する必須知識
「どうもすっきり分からない」と思っても大丈夫。
実際にコードを書いていくうちに、あるとき、するっと分かるようになります。
引き続き、学び続けていきましょう♪