PHP 複数選択可能なフォーム要素の$_POSTでの受け取り方

PHPでは

で送信されたフォーム要素を$POST['name属性']で取得できるが、 チェックボックスのように複数選択可能なフォーム要素の場合、単純に$POST['']で受け取っても選択された値のうち一つしか取得できない。

回答を複数持つフォーム要素には、送信元のformタグでも複数選択であることを[](ブラケットという)で明示する。これによって、ポストされた要素の値が配列でPHPに渡されることになる。

以下は好きな果物を選択するチェックボックスの例。

f:id:daily-coding:20181023182750p:plainf:id:daily-coding:20181023182758p:plain

form.php(送信元)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>Check Box</title>
</head>
<body>
  <form action="check2.php" method="POST">
    <input  id="fruits" type="checkbox" name="fruits[]" value="りんご"> //fruitsに[]をつける
    <label for="fruits">りんご</label>
    <input  id="fruits" type="checkbox" name="fruits[]" value="みかん"> //fruitsに[]をつける
    <label for="fruits">みかん</label>
    <input  id="fruits" type="checkbox" name="fruits[]" value="ぶどう"> //fruitsに[]をつける
    <label for="fruits">ぶどう</label>
    <input type="submit" name="" value="送信">
  </form>
</body>
</html>

answer.php(送信先)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>Answer</title>
</head>
<body>
  <p>選択されたのは <?= implode(',', $_POST['fruits']); ?> です。</p>
</body>
</html>

便宜上エスケープ処理の記述は省いています。