2012-05-04 191 views
1

我創建從PHP會話變量數組,現在我想用(內的jQuery)AJAX從數組中刪除元素。
我有下面的代碼至今:
從數組中刪除項目?

$val = $_SESSION['enquiry-basket']; 
$array = explode($val); 

foreach ($enquiries as $a => $q) { 
    if ($q == $_POST['product_id']) { 
     unset($array[$a]); 
    } 
} 

唯一的問題是,它不會刪除的項目。
任何人都可以解釋爲什麼,並告訴我如何解決它?

編輯

對不起球員。我提到jQuery的原因是因爲我使用jQuery ajax調用來處理上面顯示的PHP。
阿賈克斯查詢運行正常,因爲它處理一些JavaScript好吃的東西(刪除是一個div從HTML)一旦AJAX返回成功。
我已經添加了分隔符(不能相信我錯過了它),但元素不會從數組中移除。
我從來都不是擅長多維數組,所以這裏的印刷陣列:

Array ([0] => 6 [1] => 8) 

它看起來我的權利,但我在數組中的業餘。 (6和8,當然我的琴絃我插入)

+1

是什麼jQuery有與此有關呢? –

+1

1.這不是javascript/jQuery。 2.你使用'explode',但你沒有說如何爆炸它。使用這樣的'爆炸(「 - 」,$ VAL);'拆就 - – OptimusCrime

+1

能否請您發表您的jQuery代碼,這樣我們就可以看到正在發送的變量? – Bryan

回答

2

您從$陣列刪除項目,而不是從$ _SESSION [「查詢籃」]。

+0

當我忘記包含分隔符時,我感到很蠢。現在我只是覺得簡單愚蠢。謝謝! (給大家) –

+0

@RichardHedges我不知道爲什麼上面的答案被接受,但問題是不同的。 – Vimalnath

+0

我收到的所有答案都有助於解決我的問題。再次添加分隔符後,仍然存在未刪除項目的問題。這是告訴我我沒有從會話變量本身刪除項目的答案,所以有問題的項目不會改變。如果可以的話,我會接受所有的答案。 –

8

explode缺少第一個參數:

explode(',', $val); 
+0

這是最有可能的原因,這樣一個容易忽略的事情,很棒! – Bryan

+0

我不敢相信我錯過了!不幸的是,使用分隔符時,元素仍然不會從數組中移除。 –

1

的爆炸函數應該有兩個參數。但是你只給出了數組的名稱。 爆炸(分隔符,字符串,限制);

1

如果我理解正確你正在嘗試做的,問題是,JQuery的運行客戶端,這意味着,在服務器端你的PHP數組從阿賈克斯每個請求之間消失。唯一保留的數組是$ _SESSION。

如果你想使用AJAX,你需要從直接_SESSION $刪除。其他任何東西都是無用的,因爲數組和變量在每次調用之間「消失」。

1

大多是用爆炸功能的問題,第二個參數丟失:

變化來自:

$array = explode($val); 

要:

$array = explode('~',$val); // ~ is a delimiter