PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   If Abfrage auf Felder eines komplexen Array funktioniert nicht (http://www.selfphp.de/forum/showthread.php?t=25172)

rizinus 08.02.2014 21:44:39

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();
}
?>

rizinus 09.02.2014 03:25:02

AW: If Abfrage auf Felder eines komplexen Array funktioniert nicht
 
Hallo,
ich habe ein Lösung gefunden.
Nur zur Info, die Lösung:

PHP-Code:


        
foreach ($_SESSION["cart_array"] as $each_item) { 
              
$i++;
                  if (
$each_item['item_id'] == $pid && $each_item['size'] == $size) {
                      
array_splice($_SESSION["cart_array"], $i-11, array(array("item_id" => $pid"size" => $size"quantity" => $each_item['quantity'] + 1))); 



Alle Zeitangaben in WEZ +2. Es ist jetzt 08:49:11 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.