Hallo,
Mist, ich stecke fest und habe mich zu früh gefreut.
Ich habe folgende Bildschirmausgabe über var_dump
:
Array (2)
(
| ['ID'] = String(32) "c2e3a24865035b4ee5f7272d30e13528"
| ['Warenkorb'] => Array (0)
| (
| )
)
Dies bedeutet für mich, dass $_SESSION['Warenkorb'] als Array besteht, aber leer ist bzw. keinen Inhalt hat.
Beim Hinzufügen neuer Artikel prüfe ich, ob schon Inhalte hinterlegt sind oder nicht.
Wenn nicht, dann soll der String $Bestellposition
dem Array $_SESSION['Warenkorb']
ohne weiteren Abgleich auf bereits vorhandene Artikel hinzugefügt werden.
Sind bereits Artikel vorhanden, dann erfolgt ein Abgleich, ob der hinzuzufügende Artikel bereits vorhanden ist und dann nur die Anzahl ($Spalte[3]
) um Eins und die Gesamtsumme ($Spalte[5]
) um den Einzelpreis ($Spalte[4]
) erhöht.
Der zugehörige Code sieht folgendermaßen aus:
if (empty ($_SESSION['Warenkorb']))
{
array_push ($_SESSION['Warenkorb'], $Bestellposition);
}
else
{
for ($i = 0; $i < count ($_SESSION['Warenkorb']); $i++)
{
if (strpos ($_SESSION['Warenkorb'][$i], $Bezeichnung) !== false)
{
$ArtikelVorhanden = "ja";
$Spalte = explode ("|", $_SESSION['Warenkorb'][$i]); // Bezeichnung|Größe|Farbe|Anzahl|Einzelpreis|Summe
$Spalte[3] += 1;
$Spalte[5] += $Spalte[4];
$Bestellposition = implode ("|", $Spalte);
$_SESSION['Warenkorb'][$i] = $Bestellposition;
break;
}
}
if ($ArtikelVorhanden == "nein")
{
array_push ($_SESSION['Warenkorb'], $Bestellposition);
}
}
Aber ich komme nicht in den ersten Zweig meines Codes, der ja zutreffen müsste.
Schreibe ich nun if ($_SESSION['Warenkorb'][0] === "")
anstatt if (empty ($_SESSION['Warenkorb']))
, dann bekomme ich für diese Anweisung den Hinweis "Notice: Undefined offset: 0".
Wie muss ich das Konstrukt korrekt auf "Leere" bzw. keinen Inhalt prüfen?
Vielen Dank für eure Hilfe.
Gruß
Enrico