1

请我需要帮助,下面的代码在我的本地主机 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......我有了这些……在这种情况下,['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"** } 

请问问题的根源是什么,我什至尝试在使用它们之前将这个会话变量声明为一个空数组,但无济于事。

4

1 回答 1

2

您的问题似乎是为什么我的会话数组神秘地被自己修改了?

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

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

于 2012-07-02T15:55:11.057 回答