Att lagra arrayer i PHP-sessioner

Låt oss titta på koden som vi skapade i föregående lektion:

html<?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:

test1.php<?php
  if (!empty($_GET)) {
    $_SESSION = $_GET;
  }
?>

Och i filen test2.php göra så här:

test2.php<?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:

test2.php<?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:

test2.php<?php
  if (!empty($_SESSION)) {
    echo array_sum($_SESSION['nums']);
  }
?>
Задание 1

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.