2013-08-14 4 views
0

$ _GET 변수를 사용하여 $ _SESSION 변수에 넣는 간단한 장바구니를 만들고 싶었습니다. 내가 시도한 코드는 다음과 같습니다.PHP가 세션에 vars를 추가하는 중

내 항목 ids가 숫자이므로 세션 변수에 추가 할 임의 항목을 먼저 체크합니다. 그런 다음 결과를보기 위해 var_dump를 수행합니다. ? 처음으로 내가 가진 코드를 실행 추가 = (102) 내가 얻을 :

array(1) { [102]=> int(1) } 

내가 다음에 다시 스크립트를 실행 내가 얻을 = 108 추가 : 내가 원하는 것은

array(1) { [108]=> int(1) } 

:

array(2) { ["102"]=> int(1), ["108"]=> int(1) } 

내가 뭘 잘못하고 있니? 내 개념은 $ _GET 변수를 문자열로 변환하고 수량 1과 $ _GET의 문자열 값을 $ _SESSION에 연관시켜 저장하는 것입니다. 이것은 내가 원하는만큼 자신의 ID가 같지 않은 한 많은 항목을 추가 할 수 있어야합니다. 여기

내가 시도 대안입니다 :

strval($_GET['add']), 
(string)($_GET['add']), 
$_GET['add'] 

아무것도 작동하는 것 같다 없습니다.

도움을 주시면 감사하겠습니다.

+0

시도해주세요. $ _SESSION [(string) $ _ GET [ 'add'] []] = 1; – Satya

답변

3

$_SESSION 숫자 키는 사용할 수 없습니다. 세션에 다른 배열을 만듭니다 (예 : 그런 다음 $_SESSION['items']

:

그것은 당신이 당신의 세션에서 다른 정보가있을 때, 나중에이 항목의 배열을 반복하는 것이 훨씬 쉽다
session_start(); 
if(is_numeric($_GET['add'])) 
{ 
    $_SESSION['items'][(string)$_GET['add']] = 1; 
} 

.

+0

이 답변은 저에게 효과적입니다. 그러나 RiggsFolly의 답변에 대한 설명을 듣고 싶습니다. 이것에 비해 찬반 양론이 있습니까? – l3utterfly

0

나는 이것이 사티의 의견과 mthie의 대답 만의 융합을 실감 완전한 대답은 당신이 아니라 당신이 자신의 명명 된 위치 및에 구축 배열을 캡슐화하는 것이 좋습니다 것

  1. 할 생각해야 이

그래서

을 시도
  • 당신은 overwrite보다는마다 배열을 add to 필요
    <?php 
        session_start(); 
        if(is_numeric($_GET['add'])) { 
         $_SESSION['add'][][(string)$_GET['add']] = 1; 
        } 
    ?> 
    
  • +0

    세션 변수에서 "[]"을 이해하지 못했습니다. 그것이 3 차원 배열일까요? – l3utterfly

    +0

    $ _SESSION [$ _ GET [ 'add']]를 배열에 넣을 것입니다. 실제로 무엇이 보이는지 확실하지 않으면 print_r ($ _SESSION [(string) $ _GET [ 'add']])을 코드에 추가하십시오. – RiggsFolly

    관련 문제