配列、連想配列、foreach文
(ブログ記事の一覧は「こちら」)
PHPの配列について学びます。
ここで学ぶこと
- 配列
- foreach文
- 連想配列
参考:
配列(PHPマニュアル)
foreach文(PHPマニュアル)
例題1(配列、foreach文)
基本的な配列の書き方を確認しましょう。
まず、配列を定義して、データを追加する場合の書き方を確認しましょう。
また、配列のデータを表示する方法として、foreach文を用いた場合について確認しましょう。
<html> <head> <meta charset="UTF-8"> </head> <body> <?php $fruit = array(); // 配列として初期化 $fruit[0] = 'りんご'; $fruit[1] = 'みかん'; $fruit[2] = 'バナナ'; $fruit[3] = 'メロン'; $fruit[4] = 'すいか'; foreach ($fruit as $var) { echo $var . '<br>'; } ?> </body> </html>
上記のforeach文の書式は以下になります。
foreach (配列 as データの変数) { // データの変数を用いた処理 }
「セレクトボックス」とか「プルダウンメニュー」とか呼ばれているHTMLのコントロールは、PHPの配列を用いるとまとめて書くことができます。
以下のサンプルを実行してみましょう。
<html> <head> <meta charset="UTF-8"> </head> <body> <select name="number"> <?php $fruit = array(); // 配列として初期化 $fruit[0] = 'りんご'; $fruit[1] = 'みかん'; $fruit[2] = 'バナナ'; $fruit[3] = 'メロン'; $fruit[4] = 'すいか'; foreach ( $fruit as $value ) { echo '<option value="', $value, '">', $value, '</option>'; } ?> </select> </body> </html>
実行、確認
1つ目のサンプルは、配列のデータが一覧で表示されます。
2つ目のサンプルは、配列のデータが項目となっているセレクトボックスが表示されます。
例題2(連想配列、foreach文)
通常の配列は、添字は数値(0, 1, 2, 3, ...)を用います。
PHPでは、添字に文字列を用いることができます。「キー」と「データ」の組み合わせで扱うことのできる配列のことを「連想配列」と呼びます。
連想配列の定義と、foreach文を用いて連想配列の「キー」と「データ」の組み合わせを表示する方法を確認しましょう。
まずは通常の配列とほぼ同じ書き方での例です。
<html> <head> <meta charset="UTF-8"> </head> <body> <?php $fruit = array(); // 配列として初期化 $fruit['りんご'] = '200円'; $fruit['みかん'] = '100円'; $fruit['バナナ'] = '300円'; $fruit['メロン'] = '1000円'; $fruit['すいか'] = '800円'; foreach ($fruit as $key => $var) { echo $key . ' : ' . $var . '<br>'; } ?> </body> </html>
上記のforeach文の書式は以下になります。
foreach (配列 as キーの変数 => データの変数) {
// キーの変数とデータの変数を用いた処理
}
以下の例のように、「'キー' => 'データ'」のように指定することもできます。
<html> <head> <meta charset="UTF-8"> </head> <body> <?php $fruit = array( 'りんご' => '200円', 'みかん' => '100円', 'バナナ' => '300円', 'メロン' => '1000円', 'すいか' => '800円' ); foreach ($fruit as $key => $var) { echo $key . ' : ' . $var . '<br>'; } ?> </body> </html>
実行、確認
いずれも同じ結果になることを確認しましょう。
課題1
以下のチェックボックスを用いたPHPプログラム「checkbox_send.php」を、foreach文の書式を用いたPHPプログラムに変換してください。
<html> <head> <meta charset="UTF-8"> </head> <body> <p>好きな色を選択してください(複数選択可)</p> <form action="checkbox_receive.php" method="POST"> <p> <input type="checkbox" name="colors[]" value="青">青 <input type="checkbox" name="colors[]" value="赤">赤 <input type="checkbox" name="colors[]" value="黄">黄 <input type="checkbox" name="colors[]" value="緑">緑 <input type="checkbox" name="colors[]" value="紫">紫 <input type="checkbox" name="colors[]" value="白">白 </p> <input type="submit"> </form> </body> </html>
課題2
課題1の送信側のPHPプログラム「checkbox_send.php」に対する、受信側のPHPプログラム「checkbox_receive.php」を作成してください。
[ヒント]
以下に必要なPHPプログラムを追記してください。
<?php ?> <html> <head> <meta charset="UTF-8"> </head> <body> <h3>好きな色</h3> <p> あなたの好きな色は<?php ?>です。 </p> </body> </html>