2016-01-21 114 views
0

在我的文件adapter.php我有以下代码:PHP静态变量不工作

案“buyCard”:

 static $order=array(); 
     $id=$_POST['id']; 
     $quantity=$_POST['quantity']; 
     $price=$_POST['price']; //var_dump($price); 
     $order['id']=$id; $order['quantity']=$quantity; $order['price']=$price; 

     static $i=0; 

     $_SESSION[$i]=$order; $i++; var_dump($i); 

     break; 

在那里同样的ID,价格和数量信息来自阿贾克斯放在卡。 PHP文件,它被激活'onclick'。我需要一个计数器,这会帮助我在每次用户点击触发此事件的按钮时在会话中存储数据。但我的计数器'静态$我'应该作为索引工作不增加,我不知道为什么?如果有其他解决方案,我很高兴听到这个问题。

+0

我刚刚测试了你的脚本,你的'静态$ i'正在增加。 –

+1

因为每次请求都会再次创建'static $ i'? –

+0

不,我创建它也是全局的,但它始终是1 ... – MoKe

回答

0

既然你每一个新的订单被放在时间调用buyCard.php,然后static是没有帮助的:它使只有在同一个脚本实例更新其包含的信息

因此,您应该使用会话变量来处理您的计数器,就像您已经在执行命令一样(但您最好有一个独立的orders会话变量而不是计数器)。
事情是这样的:

session_start(); 
// ... 
$order['id']=$_POST['id']; 
$order['quantity']=$_POST['quantity']; 
$order['price']=$_POST['price']; 

@$_SESSION['orders_count']++; 
$_SESSION['orders'][$_SESSION['orders_count']]=$order; 

注从而避免了启动$_SESSION['orders_count']@:这里这个没人爱错误抑制器是有道理的,因为唯一可能的“错误”是变量尚不存在。

+0

非常感谢! – MoKe

+0

@MoKe不客气。 – cFreed