PHPセッションへの配列の書き込み
前のレッスンで作成したコードを見てみましょう:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
実は、フォームのデータすべてを一度に
$_SESSIONに書き込むこともできました:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
そして、ファイル test2.php では次のようにします:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
このアプローチの利点は、フォーム内の入力フィールドの数に関係なく コードが機能することです。
ただし、欠点もあります:
$_SESSION を上書きすると、
以前そこにあったすべてのデータが消去されてしまいます。
他のスクリプトが何かを書き込んでいるかもしれません。
それを私たちが削除してしまうのです。
別の方法を試してみましょう:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
ご覧の通り、セッション変数には単一の値ではなく、
配列全体を書き込みました。
これで、ファイル test2.php で
この配列の要素の合計を求めることができます:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
1つのページでフォームを使用して、
ユーザーに名前、年齢、給料、その他何かを尋ねてください。
これらのデータを、配列の形式で1つのセッション変数に保存します。
別のページにアクセスしたときに、
保存されたデータをループで処理し、
各配列要素を ul タグ内の
独自の li タグで出力してください。