2012-06-08 6 views
0

전자 상거래 웹 사이트에서 세션 변수를 사용하려고합니다. 아이디어는 이미 시작되지 않은 경우 세션을 시작하는 것입니다. 이미 세션이 있으면 추가 된 새 항목이 세션 배열에 이미 있는지 확인하고 싶습니다. 그렇다면, 현재 세션 배열에 추가하지 않으면 수량을 늘리십시오.PHP의 다차원 배열에 추가

문제는 추가가 작동하지 않는다는 것입니다. 첫 번째 배열과 두 번째 배열을 얻지 만 세 번째 배열을 추가하는 대신 두 번째 배열은 장바구니에 추가 버튼을 클릭 할 때마다 계속 덮어 씁니다. 여기 내 코드가

<?php 

       if(isset($_SESSION['cart'])){ 
        $newItems = ''; 
        $cart = $_SESSION['cart']; 
        foreach($cart as $item => $value){ 
//$size, $colour, $quantity and $price are the current $_GET values 
         if($prodId == $value['prodId'] && $value['colour'] == $colour && $value['size'] == $size && $value['price'] == $price){ 
          $value['qty']+= $quantity; 
          }else{ 
           $newItems = array('prodId'=>$prodId,'price'=>$price,'qty'=>$quantity,'colour'=>$colour,'size'=>$size); 
           $cart []= $newItems; 
           } 
         } 
        }else{ 
         $_SESSION['cart'] []= array('prodId'=>$prodId,'price'=>$price,'qty'=>$quantity,'colour'=>$colour,'size'=>$size); 
         } 

?> 

정말 잘못 알지는 못한다. 어떤 도움을 주시면 감사하겠습니다.

+0

스택 오버플로에 오신 것을 환영합니다! 코드를 올바르게 포맷하십시오. 코드 블록은 모든 코드 행 앞에 4 칸 들여 쓰기하여 삽입됩니다. 이번에는 코드를 포맷했지만 다음 번에 제대로 포맷하십시오. 추가 도움이 필요하시면 [편집 FAQ] (http://stackoverflow.com/editing-help#code) –

답변

1

변수에 $_SESSION['cart']을 지정하고 작업했습니다. 이것은 사본 일 뿐이며 원래 변수에 대한 참조가 아닙니다. 당신이 그것을 다시 $_SESSION를 액세스하고 조작하려는 경우, 당신이 그런 식으로 얻을 수 있습니다

$cart = $_SESSION['cart']; 
foreach($cart as $item => $value){ 
    if($prodId == $value['prodId'] && $value['colour'] == $colour && $value['size'] == $size && $value['price'] == $price){ 
     $_SESSION['cart'][$item]['qty']+= $quantity; 
    }else{ 
     // ... 

을 --- 또는 ---

당신은 단순히 다시 $cart를 조작 한 후 $_SESSION['cart']$cart을 할당합니다.

+0

위로 대답 ... 감사합니다. – goonerify

+0

foreach 루프에서 $ cart [] = $ newItems를 제거했습니다.이 코드를 다시 삽입하면 재사용됩니다. – goonerify