我需要帮助,下面这段代码在我的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"** }
请问可能是问题的根源,我甚至尝试在使用它们之前将这个会话变量声明为空数组,但是没有用。
答案 0 :(得分:2)
你的问题似乎是为什么我的会话数组本身被神秘地修改了?
如果php配置启用了register_globals
,那么$var
和$_SESSION['var']
将成为同一个变量(通过引用)。这可能会产生一些真正的代码wtf,因为将值赋给$var
也会将值赋给$_SESSION['var']
我不记得了,但是只有在调用session_start时才能建立两个变量之间的引用。另外,我认为这只发生在全球范围内。