การบันทึกอาร์เรย์ในเซสชัน 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']);
}
?>
ในหน้าเดียว ใช้ฟอร์มถามผู้ใช้เกี่ยวกับชื่อ, อายุ, เงินเดือน และอย่างอื่นอีกบางอย่าง บันทึกข้อมูลเหล่านี้ลงในตัวแปรเซสชันตัวเดียวในรูปแบบของอาร์เรย์ เมื่อไปยังอีกหน้า ให้วนลูปผ่านข้อมูลที่บันทึกไว้ และแสดงแต่ละองค์ประกอบของอาร์เรย์ในแท็ก li ของตัวเอง ภายในแท็ก ul