※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ カンマ区切りのデータを表組みにする
今回は「,(カンマ)」で区切られたデータを表組みで表示する方法を解説します。
この処理を理解するには当然ですが、「HTML」の知識が必要になります。
解からない方は「HTMLの解説」で勉強してくださいね。
- 【 解 説 】
-
まず、カンマ区切りのデータを用意しましょう。
とりあえず、次のようなデータを用意しました。
$flist[0] = "0001,John,35"; $flist[1] = "0002,Kate,26"; $flist[2] = "0003,George,18";次に、見出し部分のだけを「HTML」を使用して記述すると次のようになります。
<table border='1'> <tr> <th>No.</th> <th>名前</th> <th>年齢</th> </tr> </table>これをヒアドキュメントで出力するには「PHPの予備知識」−「PHPのヒアドキュメント」で解説したとおり、次のようになります。
print <<< END_DOC <table border='1'> <tr> <th>No.</th> <th>名前</th> <th>年齢</th> </tr> </table> END_DOC;さて、最初に用意したデータの中から1行ずつ順に取り出して「$strdat」にセットする方法には、「PHPの予備知識」−「繰り返し命令(for、foreach)」で解説した「foreach{}」を使い、次のように記述できます。
foreach ($flist as $strdat){ }その「$strdat」を「,(カンマ)」で区切って変数「$strbuf」にセットするのは、「CGI(Perl)の予備知識」で解説したとおり「split()」関数を使って次のように記述できます。
$strbuf = split(",", $strdat);取り出した「@strbuf」は項目単位に分かれてますから、3項目ありますのでこれを順に出力するには「for{}」文と「print」を使って次のように記述できます。
for($scnt0 = 0;$scnt0 <= 2;$scnt0++){ print $strbuf[$str0]; }さて、ここからです。
まず、項目はそれぞれひとつずつのセルで表示させますから前後に「<td>」タグと「</td>」タグを追加します。
したがって先ほどの記述を次のように変更します。
for $str0 (0..2){ print "<td>$strbuf[$str0]</td>\n"; }そして、この前後に行である「<tr>」タグと「</tr>」タグを追加して、次のようにします。
print "<tr>\n"; for $str0 (0..2){ print "<td>$strbuf[$str0]</td>\n"; } print "</tr>\n";最初に説明したヒアドキュメントの必要な部分を2つに分解して、これらの記述を挿入すれば出来上がりです。
では、上記の内容を使用して「カンマ区切りのデータ」を表組みにしてみます。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD> <title>カンマ区切りのデータを表組みにする</title> </HEAD> <BODY> END_DOC; $flist[0] = "0001,John,35"; $flist[1] = "0002,Kate,26"; $flist[2] = "0003,George,18"; print <<< END_DOC <table border='1'> <tr> <th>No.</th> <th>名前</th> <th>年齢</th> </tr> END_DOC; foreach($flist as $strdat){ print "<tr>\n"; $strbuf = split(",", $strdat); for($scnt0 = 0;$scnt0 <= 2;$scnt0++){ print "<td>$strbuf[$scnt0]</td>\n"; } print "</tr>\n"; }print "</table>\n"; print <<< END_DOC </BODY> </HTML> END_DOC; ?>