Ghi mảng vào session PHP
Hãy xem xét đoạn code mà chúng ta đã làm trong bài học trước:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Trên thực tế, có thể lấy và ghi
tất cả dữ liệu của form ngay lập tức vào $_SESSION:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
Và trong file test2.php làm như sau:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
Ưu điểm của cách tiếp cận này là mã của chúng ta sẽ hoạt động bất kể số lượng input trong form.
Tuy nhiên, cũng có nhược điểm: khi ghi đè lên
$_SESSION, chúng ta xóa tất cả dữ liệu
đã có ở đó trước đó. Biết đâu script khác của chúng ta
đã ghi gì vào đó? Và chúng ta lại xóa nó đi.
Hãy làm theo cách khác:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
Như bạn thấy, vào biến session chúng ta đã ghi
không phải một giá trị đơn lẻ nào đó, mà là một mảng hoàn chỉnh.
Bây giờ trong file test2.php chúng ta có thể tìm
tổng của các phần tử trong mảng này:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
Trên một trang, sử dụng form để hỏi
người dùng tên, tuổi, lương và thêm
một vài thứ khác. Hãy ghi những dữ liệu này vào một biến
session dưới dạng mảng. Khi truy cập vào trang khác,
hãy duyệt qua dữ liệu đã lưu bằng vòng lặp
và hiển thị từng phần tử của mảng trong thẻ
li của thẻ ul.