Att lagra arrayer i PHP-sessioner
Låt oss titta på koden som vi skapade i föregående lektion:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Egentligen kunde man ha tagit och lagrat
all formulärdata direkt i $_SESSION:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
Och i filen test2.php göra så här:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
Fördelen med detta tillvägagångssätt är att vår kod kommer att fungera oavsett antalet inmatningsfält i formuläret.
Det finns dock en nackdel: genom att skriva över
$_SESSION raderar vi all data
som tidigare fanns där. Vem vet vad vårt andra
skript har skrivit dit? Och vi tar bort det.
Låt oss göra på ett annat sätt:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
Som du ser, i sessionsvariabeln lagrade vi
inte ett enskilt värde, utan en hel array.
Nu kan vi i filen test2.php hitta
summan av elementen i denna array:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
På en sida, använd ett formulär för att fråga
användaren om namn, ålder, lön och något
annat. Lagra denna data i en sessionsvariabel
i form av en array. När du går till en annan
sida, gå igenom den sparade datan med en loop
och visa varje element i arrayen i sin egen
li-tagg inom en ul-tagg.