2016-01-21 87 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