Einzelnen Beitrag anzeigen
  #1  
Alt 08.02.2014, 22:44:39
rizinus rizinus ist offline
Anfänger
 
Registriert seit: Feb 2014
Alter: 59
Beiträge: 2
If Abfrage auf Felder eines komplexen Array funktioniert nicht

Hallo,
ich versuche gerade ein Warenkorb für einen Online Shop zu realisieren. Leider habe ich gerade ein Problem mit einer IF Abfrage auf ein komplexes Array.
So lege ich das Array an:

$_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "size" => $size, "quantity" => 1));

Wenn das Array schon existiert, dann prüfe ich, ob es bereits Einträge hat, wenn ja, muss geprüft warden, ob die „ID“ mit der selben „size“ schon im Array vorhanden sind, wenn ja, dann wird nur die Menge um 1 erhöht.
Die Abrage
foreach ($_SESSION["cart_array"] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if ($key == "item_id" && "size" && $value == $pid && $size) {

funtkioniert nicht.
Es wird die item_id richtig geprüft, aber size wird nicht geprüft.
Also ist an der IF-Bedingung bzw. an der Adressierung des Feldes size irgendetwas nicht richtig.

Ich benötige ein paar Tips wir ich zwei Felder eines Arrays in einer IF Abfrage prüfe.

Hier des der gesamte Code dazu. Vielen Dank im voraus.

<?php
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Section 1 (if user attempts to add something to the cart from the product page)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_GET['pid']) && isset($_GET['size'])) {
$pid = $_GET['pid'];
$size = $_GET['size'];
$wasFound = false;
$i = 0;
// If the cart session variable is not set or cart array is empty
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
// RUN IF THE CART IS EMPTY OR NOT SET
$_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "size" => $size, "quantity" => 1));
} else {
// RUN IF THE CART HAS AT LEAST ONE ITEM IN IT
foreach ($_SESSION["cart_array"] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if ($key == "item_id" && "size" && $value == $pid && $size) {
// That item is in cart already so let's adjust its quantity using array_splice()
array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "size" => $size, "quantity" => $each_item['quantity'] + 1)));
$wasFound = true;
} // close if condition
} // close while loop
} // close foreach loop
if ($wasFound == false) {
array_push($_SESSION["cart_array"], array("item_id" => $pid,"size" => $size, "quantity" => 1));
}
}
header("location: cart.php");
exit();
}
?>
Mit Zitat antworten