2009-02-04 3 views
2

좋아, 아마도 24 시간 이상 코딩했기 때문에 내 눈이 윤이 나고 있지만 여기에 난처한 상황입니다. 왜 이런 일이 발생합니까?PHP 세션 변수가 설정되었지만 PHP가이를 볼 수 없습니다. 아주 이상한

 
<?php 
session_start(); 
$tmp = "index"; 

echo "A: " . $_SESSION['page_loaded']['index']; // returns 1 
echo "B: " . $_SESSION['page_loaded'][$tmp]; // is set, but is empty 
?> 

나는 아주 기본적인 것을 여기에서 놓치고있는 것처럼 느껴진다. 그러나 나는 무엇을 모르고있다.

+0

정보를 더 제공 할 수 있습니까? –

+0

나는 그 문제가 코드의 다른 부분에있을 것이라고 생각한다. (적어도 나에게) – Sasha

+0

$ _SESSION [ "page_loaded"]에 $ tmp를 넣으려고하고 있습니까? 그렇다면 $ _SESSION 배열에 값을 넣을 때 값을 반향시킬 수 있는지 확실하지 않습니다. 나는 틀릴 수도 있지만, 전에 아무도 시도한 적이 없다. – Sampson

답변

2

(달러 기호 $ 제거)? 당신이 빠져 나가는 것이 있습니까?

0

값을 보려면 var_dump 함수로 시도해보십시오.

0

사용해보십시오 :

$tmp = 'index'; // Note the single quotes. 
//... 
echo "B: " . $_SESSION['page_loaded'][$tmp]; 

PHP는 약간 다르게 단일 및 이중 인용 문자열을 해석합니다. 이 기사를 herehere으로 읽어보십시오.

UPDATE : 두 문자열이 동일하지 않은 경우 그냥 (아래 코멘트 주어진) 명확하게 단일 또는 이중 인용 문자열 원래 포스터의 문제를 초래하는를 사용하는 경우 확인하는 나의 논리는 다음 예에 표시됩니다

$var = 1; 

$tmpA = 'index_$var'; // will resolve to index_$var 
$tmpB = "index_$var"; // will resolve to index_1 

if ($tmpA === $tmpB) 
    echo 'Identical'; 
else 
    echo 'Not Identical!'; // <--- we get this because they are NOT identical. 
+0

사용 된 따옴표의 유형이이 경우에 차이를 만들 것이라고 생각하지 마십시오. – Michael

+0

일 수도 있지만 OP에서 게시 한 코드에서 볼 수있는 전부입니다. 왜 투표가 내려 졌습니까? 그 공정한 충분한 대답. – QAZ

+0

php는'$ tmp = 'index ''가 모든면에서'$ tmp = "index"'와 동일하다고 봅니다. OP가 코드의 방식으로 많이 게시하지 않았지만 동의합니다. –

1

어디에서 다음을 설정합니까?

$_SESSION['page_loaded'][$tmp]; 

다음 작품 :

<?php 

    session_start(); 
    $tmp = "index"; 

    $_SESSION["page_loaded"][$tmp] = "Foo"; 

    echo "A: " . $_SESSION['page_loaded']["index"]; // foo 
    echo "<br/>"; 
    echo "B: " . $_SESSION['page_loaded'][$tmp]; // foo 

?> 
+0

그는 그가 중요하게 여겨서는 안된다. 첫 번째 에코 라인은 "1"을 반환하므로 두 번째 에코 라인은 "1"을 반환해야합니다. – Michael

+0

@mangst - 문제가됩니다. 예상 값을 반환하지 않으면 다시 설정해야합니다. – Sampson

+0

아니야하지 마! : P 두 행 모두 동일한 배열 요소에 액세스하지만 다른 방법으로 문제가 발생합니다. 라인 # 1은 인라인 문자열을 사용하고 라인 # 2는 문자열을 포함하는 변수를 사용합니다. 두 문자열은 같기 때문에 두 값이 모두 같은 값을 반환해야합니다. – Michael

-5

당신은

$_SESSION['page_loaded']['tmp'] = "index"; 

대신

$tmp = "index"; 

사용해야하고 값 사용을 검색하기 위해이

,369
echo "B: " . $_SESSION['page_loaded']['tmp']; // the output is: B: index 

내가 느낌 실제로 잘라 그 코드를 붙여하지 않은이

+0

아니요, 작동하지 않습니다. $ _SESSION [ 'page_loaded'] [ 'tmp']를 사용하면 완전히 다른 배열 요소에 액세스하게됩니다. – Michael

+0

@mangst : 그것은 나를 위해 일합니다!, 나는 설명을 추가했습니다. – ahmed

관련 문제