PHP超入門 (20)


前回は、HTMLのチェックボックス型のフォームを使って、ユーザーが複数
の選択肢を選んだ場合、その選んだそれぞれの値をPHPで表示するには「fo
reach(フォーイーチ)」文を使うとお話しました。

また、その場合、値を選択するHTML文にも、name="kudamono"ではなくてn
ame="kudamono[]"という具合に書くことも同時にお話しました。

実例として、下のHTML文とPHP文を組み合わせて使うと、チェックボッ
クスで選択した果物の名前がブラウザに表示されるというものを紹介しました。


●前回の実例●

HTML文

--------------------------------------------------------------------------------
<html>
<head>
<title>チェックボックスのテスト</title>
</head>
<body>

<form action="074-2.php" method="post">

あなたの好きな果物は何ですか(複数回答可)
<table border="1">
<tr>
<td>りんご</td><td><input type="checkbox" name="kudamono[]" value="りんご"></td>
</tr><tr>
<td>みかん</td><td><input type="checkbox" name="kudamono[]" value="みかん"></td>
</tr><tr>
<td>すいか</td><td><input type="checkbox" name="kudamono[]" value="すいか"></td>
</tr><tr>
<td>メロン</td><td><input type="checkbox" name="kudamono[]" value="メロン"></td>
</tr><tr>
<td>いちご</td><td><input type="checkbox" name="kudamono[]" value="いちご"></td>
</tr>
</table>
<input type="submit" name="bottun1" value="入 力">
</form>

</body>
</html>
--------------------------------------------------------------------------------
(ブラウザで見た目の図)

PHP文(ファイル名は:"074-2.php")

-------------------------------------
<?php
$kudamono_1 = $_POST["kudamono"];

print("あなたの好きな果物は"."<br>");

foreach($kudamono_1 as $val_1){
	print(" "."$val_1"."<br>");
}

print("ですね。");
?>
-------------------------------------
(ブラウザで見た目の図)

そして、今回は、このPHPプログラムに使っている「foreach(フォーイーチ
)」文についての少々詳しいお話です。



■「foreach」文について

上で挙げたforeach文はPHPプロラムでは実際に使用しているもので、例え
ば、果物の名前を1個づつ改行するための、"<br>"等、余計なものが書いてあ
りますが、一般的な書式は


-----------------------------
foreach($kudamono_1 as $abc){
	print($abc);
}
-----------------------------
※"$kudamono_1"という変数(文字)は変えてはいけませんが、$abcという変
 数(文字)は、ユーザーが自由に指定できます。


といった具合になり、前回の結果で分かるように、上記PHP文の「$kudamon
o_1 = $_POST["kudamono"]」という操作で、「$kudamono_1」という変数には
複数の値が入っていて、foreach文の2行目でその複数の値を1個ずつ取り出
していることになります。


これだけの説明だと、「???」という方も多いと思うので、ここで、1つの
実験をしてみます。


まず、前回と同じように、上に挙げたHTML文の「form action="074-2.php"
method="post"」の部分を「form action="075-1.php" method="post"」と変え
て、「C:\Inetpub\wwwroot\php」フォルダに「075-1.htm」という名前で保存し
ます

次に以下のPHP文を作成します。

---------------------------------
<?php
$kudamono_1 = $_POST["kudamono"];

print("$kudamono_1[0]"."<br>");
print("$kudamono_1[1]"."<br>");
print("$kudamono_1[2]"."<br>");
print("$kudamono_1[3]"."<br>");
print("$kudamono_1[4]"."<br>");
?>
---------------------------------

このPHP文をやはり同じように「C:\Inetpub\wwwroot\php」フォルダに「075
-1.php」という名前で保存します

そして、ブラウザのアドレス欄に「http/localhost/php/075-1.htm」と入力し
て、好きなチェックボックスにチェックを入れます。
そして、「入 力」ボタンを押してみると。。。

チェックボックスで選んだ果物の名前が表示されると思います。
(全部の果物を選択しない限り、エラーメッセージが出る場合もありますが、
 これは気にしなくてもイイです。)


  実例はコチラ → http://www.e-and-a.ws/05/075-1.htm

この実験で分かるように、「$kudamono_1 = $_POST["kudamono"]」での「$kud
amono_1」はスカラー配列で、foreach文は、そのスカラー配列から、値の入っ
ているものを1つづつ取り出すという働きをしています。

別の説明のし方をすると、foreach文は


 1回目のループ(loop:輪とか環とかの意味)
  ・$kudamono_1[0]に値が入っているか調べる

  ・値が入っていれば、一時的な変数(上の例では$abc)に代入して、それ
   を表示(print)する。入っていなければ、何もしないで2回目のループへ

 2回目のループ
  ・$kudamono_1[1]に値が入っているか調べる

  ・値が入っていれば、一時的な変数(上の例では$abc)に代入して、それ
   を表示(print)する。入っていなければ、何もしないで3回目のループへ
            ・
            ・
            ・
            ・
            ・
 5回目のループ
  ・$kudamono_1[4]に値が入っているか調べる

  ・値が入っていれば、一時的な変数(上の例では$abc)に代入して、それ
   を表示(print)する。入っていなければ、終了


というような作業を自動的にやってくれます。

今回のforeach文のように、値を一定数移動しながら(今回の場合は[0]〜[4]
)、同じような処理を繰り返し行わせるものを「ループ文」と呼び、ほかにも
いくつかの種類のループ文があります。


以上が、前回登場したforeach文の詳しい説明なのですが、分かっていただけ
たでしょうか?

配列を扱う時には、このforeach文が必須になりますので、詳しい書式を憶え
なくても、そういうものがある、ということはせめて覚えておいてください。

新しく「パソコン(PC)初心者向け パソコンサポートサービス」を始めました。
詳細は専用サイトを御覧ください。

上記の内容はシリーズとしてメールマガジンで配信しています。

42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)

メールマガジン登録  メールアドレス:
メールマガジン解除  メールアドレス:

Powered by まぐまぐ

copyright(c) 2002-2007 E&A工房 All rights reserved.