PHPの配列と foreach 文でデータを繰り返し表示しよう!

📁 作成ファイル・保存場所

XAMPPがインストールされているhtdocs フォルダに以下のファイルを作成してください。

ファイル名内容
htdocs/php-basic/05.phpPHPとHTML
  • XAMPP(Apacheが起動していること)
  • XAMPPがインストールされているhtdocs フォルダに内に作成されていること

目的

  • 配列(array)の基本を理解する
  • foreach文の書き方に慣れる
  • 配列の中の値を1つずつ使う処理が書けるようになる

チェックポイント

  • 配列に値を入れて使える?
  • foreachで配列の値を1つずつ取り出せる?
  • 配列+HTML表示の組み合わせができる?

配列と連想配列 foreach文

配列とは?

配列(array)は、複数の値をまとめて扱えるデータの形です。

通常の配列は、値が順番に並んでいて、0番からの番号(インデックス)で管理されます。

$fruits = ['りんご', 'バナナ', 'みかん'];
echo $fruits[0]; // りんご

連想配列とは?

インデックス番号の代わりに、名前(キー)で管理します。

$user = [
  'name' => 'たろう',
  'age' => 25,
  'email' => 'taro@example.com'
];

echo $user['name']; // たろう

名前・年齢などの「項目名」が決まっているデータに便利!

多次元配列(配列の中に配列)とは?

配列の中に、さらに配列が入っている形です。表やリストのような複雑なデータを扱えます。

$users = [
  ['name' => 'たろう', 'age' => 25],
  ['name' => 'はなこ', 'age' => 30]
];

echo $users[1]['name']; // はなこ

表形式のデータ、複数人のユーザー情報、商品一覧など

foreach文とは?

foreach 文は、配列の中身を1つずつ取り出して処理するための繰り返し文です。
通常の配列・連想配列どちらにも使えます。

//通常の配列
$fruits = ['りんご', 'バナナ', 'みかん'];

foreach ($fruits as $fruit) {
  echo $fruit . '<br>';
}

//連想配列
$user = [
  'name' => 'たろう',
  'age' => 25,
  'email' => 'taro@example.com'
];

foreach ($user as $key => $value) {
  echo "{$key}:{$value}<br>";
}

表形式のデータ、複数人のユーザー情報、商品一覧など

PHP基礎トレーニング

<?php
$colors = ['赤', '青', '緑'];

foreach ($colors as $color) {
    echo $color . '<br>';
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>配列とforeachの練習</title>
</head>
<body>

<h1>色のリスト</h1>

<ul>
<?php foreach ($colors as $color): ?>
    <li><?php echo $color; ?></li>
<?php endforeach; ?>
</ul>

</body>
</html>

  • PHPタグ内で foreach ($配列 as $変数): を使うと、HTMLの中でもループが書きやすくなります。
  • foreach の終わりは endforeach; を使います。

表示確認の手順

下記のコード入力が終わったら、以下の手順で動作を確認してみましょう。

  1. XAMPP を起動
     「Apache」が起動していることを確認します。
  2. ブラウザを開く
     Google Chrome など、普段使っているブラウザを開きます。
  3. アドレスバーに入力
     次のURLを直接入力して Enter を押します
http://localhost/php-basic/
  1. 01.php をクリック
     フォルダ一覧の中に「02.php」というファイル名が見えたら、それをクリックしてください。
  2. ページが表示されれば成功!
     「PHP基礎学習のスタートです」や「ウェブトレーニングで頑張りましょう」などの文字が表示されていれば、PHPが正しく動いています。

PHP応用トレーニング

PHPのforeach文では、中かっこ { } の代わりに「:」と「endforeach;」で囲むことができます。
この書き方は、HTMLの中で使うとコードが読みやすくなります。

複数ユーザーの連想配列 → 表(table)で表示しよう

<?php
$users = [
  [
    '名前' => 'たろう',
    '年齢' => 25,
    '性別' => '男性'
  ],
  [
    '名前' => 'はなこ',
    '年齢' => 30,
    '性別' => '女性'
  ],
  [
    '名前' => 'じろう',
    '年齢' => 22,
    '性別' => '男性'
  ]
];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ユーザー一覧</title>
    <style>
        table {
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #999;
            padding: 8px;
            text-align: center;
        }
        th {
            background-color: #f0f0f0;
        }
    </style>
</head>
<body>

<h1>ユーザー一覧表</h1>

<table>
  <thead>
    <tr>
      <th>名前</th>
      <th>年齢</th>
      <th>性別</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($users as $user): ?>
      <tr>
        <td><?php echo $user['名前']; ?></td>
        <td><?php echo $user['年齢']; ?>歳</td>
        <td><?php echo $user['性別']; ?></td>
      </tr>
    <?php endforeach; ?>
  </tbody>
</table>

</body>
</html>

配列の構造について

$users = [
  ['名前' => 'たろう', '年齢' => 25, '性別' => '男性'],
  ['名前' => 'はなこ', '年齢' => 30, '性別' => '女性'],
  ['名前' => 'じろう', '年齢' => 22, '性別' => '男性']
];
  • $users は「多次元配列」です。
  • 中に複数の連想配列が入っています(1人分の情報が1つの連想配列)。
foreach ($users as $user)
  • 1回目:$user['名前' => 'たろう', '年齢' => 25, '性別' => '男性'] が入る
  • 2回目:$user['名前' => 'はなこ', '年齢' => 30, '性別' => '女性'] が入る
  • つまり、$user も連想配列(配列の1つ)として扱われています。