2012-02-19 2 views
-1

장바구니에서 항목을 제거하는 코드를 작성하고 있습니다. unset($_SESSION['cart'])을 사용하여 전체 세션 변수를 설정 해제하는 대신 개별 배열 요소를 대상으로하고 싶습니다. 항목 행의 remove 버튼을 누르면 변수 'isbn'에 저장된 고유 ID가 제출된다고 가정합니다.PHP가 요소별로 세션 변수를 설정 해제했습니다.

왜 작동하지 않습니까? unset($_SESSION['cart'][$_POST['isbn']]) ;

내 해결 방법 :

$isbn[] = $_POST['isbn'] ; 
$_SESSION['cart'] = array_diff($_SESSION['cart'],$isbn); 
+1

당신이 보여 주는 것이 효과가 있습니다. 이것은 기본적인 디버깅을 요구합니다 :'$ _POST [ 'isbn']'은 무엇을 포함합니까? 세션 배열의 값과 100 % 일치합니까? 'print_r()'을 사용하여 배열을 출력하고 값을 다시 확인하십시오. –

+0

나는 그 문제가 [9] => $ _POST [ 'isbn']이 실제 값일 수 있다고 생각한다. 9780192814968하지만 이것이 작동하려면 내가 어떤 키를 해제하고 싶은지를 알려줄 필요가있다. – raoulbia

+0

'$ isSS [[cart ']'의 키가 정수 인 동안'$ isbn'의 값이 문자열일까요? – thetaiko

답변

0

가있어! :)

foreach ($_SESSION['cart'] as $key => $val) 
    { 
     if($val == $_POST['isbn']) 
     { 
      unset($_SESSION['cart'][$key]) ; 
      header('Location: .') ; 
      exit() ; 
     } 
    } 

그러나, 나는 뒤에 마법의 정확히 모르겠어요 :이 두 라인을 정확히 무슨 일

header('Location: .') ; 
exit() ; 

? 이것이 생략되면 왜 작동하지 않습니까?

+0

위치 :. 이론적으로는 브라우저를 새로 고침 (현재 페이지로 리디렉션)하고 종료하면 스크립트가 종료됩니다 (die()와 유사). http://php.net/manual/en/function.exit.php – Tyzoid