PHP静态变量不起作用

时间:2016-01-21 12:53:22

标签: php ajax indexing static

在我的文件adapter.php中,我有以下代码:

case' 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,price和quantity等信息来自card.php文件中的ajax,并且已激活' onclick'。我需要一个计数器,每当用户点击触发此事件的按钮时,它将帮助我在会话中存储数据。但我的反击是静态$ i'应该作为索引工作不是递增,我不明白为什么?如果对这个问题有其他解决方案,我很高兴听到它。

1 个答案:

答案 0 :(得分:0)

由于您每次下达新订单时都会调用buyCard.php,因此static没有任何帮助:它只会在同一个脚本实例中更新其包含的信息 < / EM>!

所以你应该使用会话变量来处理你的计数器,就像你已经为订单做的那样(但你最好有一个独特的orders会话变量而不是计数器)。
像这样:

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

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

请注意避免启动@的{​​{1}}:此处这个不受欢迎的错误抑制器是有意义的,因为唯一可能的错误&#34;是变量还没有存在。