2016-10-03 1 views
0

Ich kann diese Sitzung Werte festlegen.Session-Wert nicht anderen Schlüssel und ihren Wert

<?php 
    $_SESSION['cart_items'][$name]['price']=$price; 
    if (!empty($quantity)) { 
    $_SESSION['cart_items'][$name]['quantity']=$quantity; 
    } 
?> 

Aber wenn ich laufen diese

<?php 
    foreach($_SESSION['cart_items'] as $key => $value) { 
    echo $key ; 
    echo $value; 
    //echo "<br>prod product_price : ".$product_price; 
    } 
?> 

Es druckt nur die $_SESSION['cart_items'][$name]['price']. Es druckt nicht den Mengenwert. Wie kann ich mich wie für die $name den Preis, Menge drucken usw.

Hier ist mein vollständiger Code:

if(!isset($_SESSION['cart_items'])){ 
    $_SESSION['cart_items'] = array(); 
} 

// check if the item is in the array, if it is, do not add 
if(array_key_exists($id, $_SESSION['cart_items'])){ 
    // redirect to product list and tell the user it was added to cart 
    header('Location: products.php?action=exists&id' . $id . '&name=' . $name); 
} 

// else, add the item to the array 
else{ 
    $_SESSION['cart_items'][$name]['price']=$price; 

    if (!empty($quantity)){ 
      echo "adding qty"; 
     $_SESSION['cart_items'][$name]['quantity']=$quantity; 
    } 

    // redirect to product list and tell the user it was added to cart 
    // header('Location: products.php?action=added&id' . $id . '&name=' . $name); 
} 
+0

Bist Du sicher, dass '$ _SESSION [ 'cart_items'] [$ name] [ 'Menge'] 'wird eingestellt? Ich würde zuerst testen, ob die Ausführung auf diesem konditionalen – ReynierPM

+0

eintritt. – user5313398

+1

Fügen Sie die Ausgabe von 'var_export ($ _ SESSION ['cart_items']' auf dem Hauptpostpls – ReynierPM

Antwort

1

Wenn Sie Ihr neues Element zu erstellen, benötigen Sie einen Array auf [$ name] zu erstellen, da ein Artikel für Sie ein Array ist. Ohne dies zu tun, haben Sie versucht, einen Wert zuzuweisen, als wäre es ein Array, aber es war nur ein einfacher Wert.

<?php 

    if(!isset($_SESSION['cart_items'])){ 
     $_SESSION['cart_items'] = array(); 
    } 

    // check if the item is in the array, if it is, do not add 
    if(array_key_exists($id, $_SESSION['cart_items'])){ 
     // redirect to product list and tell the user it was added to cart 
     header('Location: products.php?action=exists&id' . $id . '&name=' . $name); 
    } 

    // else, add the item to the array 
    else{ 
     //Since your item is an array, you need to create it. 
     $_SESSION['cart_items'][$name] = array(); 
     $_SESSION['cart_items'][$name]['price']=$price; 

     if (!empty($quantity)){ 
       echo "adding qty"; 
      $_SESSION['cart_items'][$name]['quantity']=$quantity; 
     } 

     // redirect to product list and tell the user it was added to cart 
     // header('Location: products.php?action=added&id' . $id . '&name=' . $name); 
    } 
+0

Wie führe ich die for-Schleife so, dass für den Namen ich seine Menge und Preis drucken und auch den Namen ausdrucken möchte? – user5313398

+0

@Wie soll ich diesen Abschnitt improvisieren, wenn ich ein Array von $ _SESSION ['cart_items'] [$ name] habe, möchte ich die Menge mit einem neuen Wert aktualisieren? – user5313398

+0

@ user5313398 benötigen Sie zwei 'foreach' -Schleife, eine um '$ name' zu ​​iterieren und die zweite um' $ key => $ value 'unter diesem' $ name' zu ​​durchlaufen. – ReynierPM

1

Sie haben ein mehrdimensionales Array:

$_SESSION['cart_items'][$name]['quantity']=$quantity; 
    ^--#1  ^--#2  ^--#3 

Da dies Ihre foreach:

foreach($_SESSION['cart_items'] as $key => $value){ 
       ^--#1       ^--#2 

was bedeutet, dass, wenn Sie echo $value, du bist t rying, um ein Array zu echo Sie würden eine weitere Schleife brauchen diese dritte Dimension zu erreichen:

foreach($_SESSION['cart_items'] as $key => $item) { 
       ^--#1       ^--#2 
    foreach($item as $key2 => $value) { 
      ^--#2    ^--#3 
0

Versuchen Sie diesen Code

<?php 
    if (!isset($_SESSION['cart_items'])) { 
    $_SESSION['cart_items'] = array(); 
    } 
    $z = $_SESSION['cart_items']; 
    $q = array_column($z, 'name'); 
    if (array_key_exists($id, $q)){ 
    header('Location: products.php?action=exists&id' . $id . '&name=' . $name); 
    } else { 
    if (!empty($quantity)) { 
     array_push($_SESSION['cart_items'], array('name' => $name, 'quantity' => $quantity, 'price' => $price)); 
    } 
    header('Location: products.php?action=added&id' . $id . '&name=' . $name); 
    } 

?> 

Dann können Sie alle Artikel Echo

<?php 
    $f = $_SESSION['cart_items']; 
    $d = array_column($f, 'name'); 
    $s = array_column($f, 'quantity'); 
    $t = array_column($f, 'price'); 
    static $x = 1; 
    while (count($d) > $x) { 
    echo $d[$x]; 
    echo $s[$x]; 
    echo $t[$x]; 
    $x++; 
    } 

?> 
Verwandte Themen