2012-11-02 58 views
0

我使用此代碼輸出的所有已註冊的會話變量 -更新特定的會話變量

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 
exit(); 

這是我得到

Array 
(
[language] => english 
[navigation] => navigationHistory Object 
    (
     [path] => Array 
      (
       [0] => Array 
        (
         [get] => Array 
          (
          ) 

         [post] => Array 
          (
          ) 

        ) 

       [1] => Array 
        (

         [get] => Array 
          (
          ) 

         [post] => Array 
          (

           [number] => XXXXXXXXXXXX 
           [x] => 62 

          ) 
       ) 

      ) 

     ) 
) 

我想更新number變量[1]數組從XXXXXXXX ...到555555.我試過

$_SESSION['number'] = "55555555555555"; 

但剛剛結束創建一個新的會話變量名爲數組以外的數組與555 ..值,而不是更新正確的一個。這可以做到嗎?

回答

1

試試這個:

$_SESSION['navigation']->path[1]['post']['number']=123; 
+0

madbreaks回答工作嗎? – Landon

+0

對不起,我錯誤地評論了你的意見。你的工作很有魅力。太感謝了。你很棒。 –

+0

我可能說得太快了。雖然它似乎工作,我最終得到的是整個[1]陣列轉移到[2],我得到一個新的[1]與變量號爲123 ...? –

2

這是一個嵌套的數組/對象,所以你必須向下遍歷數組變量要設置:

$_SESSION['navigation']->path[1]['post']['number'] = "55555555555555"; 
+0

謝謝,它非常有意義,但我得到以下錯誤。 不能使用類型navigationHistory的對象作爲數組 我知道這是在原始問題之外,對不起。 –

+1

「路徑」是一個對象屬性,而不是數組索引 – Landon

+0

@Landon謝謝,是的,錯過了。更新了答案。 – Madbreaks

1

我常常感到困惑,在此我自己這讓我想起了這些真正的長人。一個非常簡單的方法可以讓你摸不着的東西出來自己是做到以下幾點:在你的代碼的末尾,你有一個print_r的:

print_r($_SESSION); 

採取猜測層次結構中的一個新的水平是什麼:

print_r($_SESSION['navigation']) 

運行該操作,如果出現錯誤,請嘗試其他操作。如果它有效,你應該看到那個人的一張照片,並且你越來越接近你的價值。一旦看起來不錯,就試試另一個屬性:

print_r($_SESSION['navigation']->path); 

這是否行得通?好的,繼續。並一直這樣做,直到你得到你想要的。

+0

非常感謝,祝你有個美好的一天。 –