$ _SESSION多维数组问题

时间:2012-07-02 15:45:32

标签: php

我需要帮助,下面这段代码在我的localhost,php5.3 +上工作正常,但在服务器上工作不正常。 5.2

    $_SESSION['myinv_id'] = $setinvid;
    $_SESSION['prod_name'][$i] = $prod_name;    
    $_SESSION['qty'][$i] = $clean_qty;
    $_SESSION['price'][$i] = $clean_price;
    $_SESSION['total'][$i] = $clean_total;
    $_SESSION['desc'][$i] = $desc;

当我做了一个var_dump

第一次添加内容时,我有这些内容。

    array(5) { 
     ["prod_name"]=> array(1) {[0]=> string(4) "SDFD" }
     ["qty"]=> array(1) {[0]=> string(2) "43"} 
     ["price"]=> array(1) { [0]=> string(2) "43" } 
     ["total"]=> array(1) { [0]=> string(4) "1849" } 
     ["desc"]=> array(1) { [0]=> string(6) "dsfsdf" } } 

工作正常....因为数组被返回但是试图添加第二个值...我得到这些错误...说法语符号错误[]不期望字符串..当我做了一个var_dump。 ..i有这些......在这种情况下,['prod_name']& ['desc']不可避免地从数组变为字符串,并且数组值不能被推入赌注。

    array(5) { 
     **["prod_name"]=> &string(5) "dddsd"** 
      ["qty"]=> &array(2) { 
        [0]=> string(2) "43" 
       [2]=> string(2) "45" }
       ["price"]=> &array(2) { 
  [0]=> string(2) "43" 
     [2]=> string(1) "3" } 
     ["total"]=> &array(2) { 
[0]=> string(4) "1849" 
        [2]=> string(3) "135" } 
      **["desc"]=> &string(7) "dsddadd"** } 

请问可能是问题的根源,我甚至尝试在使用它们之前将这个会话变量声明为空数组,但是没有用。

1 个答案:

答案 0 :(得分:2)

你的问题似乎是为什么我的会话数组本身被神秘地修改了?

如果php配置启用了register_globals,那么$var$_SESSION['var']将成为同一个变量(通过引用)。这可能会产生一些真正的代码wtf,因为将值赋给$var也会将值赋给$_SESSION['var']

我不记得了,但是只有在调用session_start时才能建立两个变量之间的引用。另外,我认为这只发生在全球范围内。