2012-11-02 62 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

非常感谢,祝你有个美好的一天。 –