2013-03-07 5 views
-1

J'ai un tableau SESSION $ _SESSION [ 'cart']Récupère la valeur dans un tableau associatif multidimensionnel?

par exemple, il a valeur

Array 
(
    [0] => 
    [1] => Array 
     (
      [item_id] => 1420 
      [item_qty] => 1 
     ) 
    [2] => Array 
     (
      [item_id] => 1522 
      [item_qty] => 1 
     ) 
) 

Maintenant, nous allons dire que j'ai item_id = 1420

maintenant je veux pour augmenter le item_qty pour item_id = 1420 et aussi je dois le définir dans ce tableau SESSION.

Ce que je l'ai essayé:

foreach($_SESSION['Cartquantity'] as $key => $d) 
    { 
     if(isset($d)) { 
        if($d['item_id'] == $_GET['item_id']) 
        { 
         $d['item_quntity'] = $d['item_quantity']+1; 
        } 
      } 
      else{ 

       } 
    } 

Il ne fonctionne pas?

+0

Assurez-vous de la session avec le nom '' Cartquantity' ou cart'? – Rikesh

Répondre

3

Vous itérer sur $_SESSION['Cartquantity'] mais nous ont dit que le tableau est stocké dans $_SESSION['cart'].

En outre, ceci:

$d['tem_quntity'] = $d['item_quantity']+1; 

devrait être:

$d['item_qty'] = $d['item_qty']+1; 

Enfin, vous aurez besoin de faire $d une référence en préfixant une esperluette (&) à elle dans l'état foreach.

foreach($_SESSION['cart'] as $key => &$d) 
    { 
     if($d) { 
        if($d['item_id'] == $_GET['item_id']) 
        { 
         $d['item_qty'] = $d['item_qty']+1; 
        } 
      } 
      else{ 

       } 
    } 
+0

mec, mais ce n'est pas l'ajout dans le tableau de la session – Shreya

+0

Êtes-vous le 'et mettent' 'avant la d' de $ dans la condition' foreach'? – MichaelRushton

+0

ok vous avez raison – Shreya

0

Essayez de vérifier !empty($array)

if(!empty($d)) 

parce qu'il tableau de sorte que vous devez vérifier si elle ne pas d'éléments à l'intérieur de celui-ci.

Si vous voulez savoir si le tableau est défini, utilisez isset($d). Si vous souhaitez savoir si une clé particulière est définie, utilisez isset($d['item_id']).

Si vous voulez savoir si un tableau n'a pas vide et contient des paires valeur/clé, utilisez !empty($d).

0

utiliser:

foreach($_SESSION['cart'] as $key => $d) 
    { 
     if($d) { 
        if($d['item_id'] == $_GET['item_id']) 
        { 
         $d['tem_quntity'] = $d['item_qty']+1; 
        } 
      } 
      else{ 

       } 
    } 
+0

Je pense que ça va marcher. – Kabir

1

Utilisez référence & $ d

foreach($_SESSION['Cartquantity'] as $key => &$d) 
    { 
     if($d) { 
        if($d['item_id'] == $_GET['item_id']) 
        { 
         $d['tem_quntity'] = $d['item_quantity']+1; 
        } 
      } 
      else{ 

       } 
    } 

ou

foreach($_SESSION['Cartquantity'] as $key => $d) 
    { 
     if($d) { 
        if($d['item_id'] == $_GET['item_id']) 
        { 
         $_SESSION['Cartquantity'][$key]['item_quntity'] = $d['item_quantity']+1; 
        } 
      } 
      else{ 

       } 
    } 
+0

Ce second exemple n'a pas besoin de cette référence. – MichaelRushton

+0

oui, je viens de première collé, merci :) –

0

changer cette

$d['tem_quntity'] = $d['item_quantity']+1; 

à

$d['item_qty'] = $d['item_qty']+1; 
0

vous pouvez appeler par

foreach ($_SESSION['Cartquantity'] as $value)) 
{ 
    if(isset($value)) 
    { 
    if($value['item_id'] == $_GET['item_id']) 
    { 
     $value['item_quntity'] = $value['item_quantity']+1; 
    } 
    } 
    else 
    { 

    } 

} 
+0

comment vous vous obtiendrez '$ d [ « item_id »]' – Kabir

+0

thats une erreur de copier coller .. ont corrigé ... –

0
foreach($_SESSION['cart'] as $key=>$val) 
{ 
    foreach($val as $subK) 
    { 
     if($_GET["item_id"]==$subk["item_id"]) 
     { 
      $_SESSION['cart'][$key]["item_id"]=$_SESSION['cart'][$key]["item_quantity"]+1; 
     } 
    } 
} 
Questions connexes