Lagring af arrays i PHP sessioner
Lad os se på koden, vi lavede i den forrige lektion:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Faktisk kunne man have taget og gemt
alle formdata med det samme i $_SESSION:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
Og i filen test2.php gøre sådan her:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
Fordelen ved denne tilgang er, at vores kode vil fungere uafhængigt af antallet af inputfelter i formularen.
Der er dog også en ulempe: ved at overskrive
$_SESSION sletter vi alle data,
der tidligere var der. Hvad nu hvis et andet
script har skrevet noget der? Så sletter vi det.
Lad os gøre på en anden måde:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
Som du kan se, har vi i sessionvariablen gemt
ikke én enkelt værdi, men en hel array.
Nu kan vi i filen test2.php finde
summen af elementerne i denne array:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
På én side, spørg brugeren ved hjælp af en formular
om navn, alder, løn og noget andet.
Gem disse data i én sessionvariabel
i form af en array. Når du går ind på en anden
side, gennemgå de gemte data med en løkke
og udskriv hvert element i arrayen i sit eget
li-tag i et ul-tag.