配列、連想配列、foreach文

(ブログ記事の一覧は「こちら」)

PHPの配列について学びます。

ここで学ぶこと

参考:

配列(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>