1

PHPセッション変数から配列を作成しましたが、ajax(jQuery内)を使用して配列から要素を削除しようとしています。
私はこれまでに次のコードを持っています:

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

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

唯一の問題は、アイテムが削除されないことです。
誰かが理由を説明し、それを修正する方法を教えてもらえますか?

編集

すみません。jQueryについて言及した理由は、jQueryajax呼び出しを使用して上記で表示したPHPを処理するためです。
ajaxが成功を返すと、いくつかのjavascriptグッズ(HTMLからdivを削除)を処理するため、ajaxクエリは正常に実行されます。
区切り文字を追加しましたが(見逃したとは信じられません)、要素はまだ配列から削除されません。
私は多次元配列が得意ではなかったので、次のように印刷された配列を示します。

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

私には正しいように見えますが、私はアレイのアマチュアです。(6と8はもちろん私が挿入した文字列です)

4

5 に答える 5

8

explode最初の引数がありません:

explode(',', $val);
于 2012-05-04T13:35:35.337 に答える
2

$_SESSION['enquiry-basket']からではなく$arrayからアイテムを削除しています。

于 2012-05-04T13:35:47.477 に答える
1

explode関数には2つのパラメーターが必要です。しかし、あなたは配列の名前だけを与えました。explode(separator、string、limit);

于 2012-05-04T13:37:57.380 に答える
1

私があなたがやろうとしていることを正しく理解している場合、問題はJQueryがクライアント側で実行されることです。つまり、サーバー側のPHP配列がAjaxからの各リクエストの間に消えます。残っている唯一の配列は$_SESSIONです。

AJAXを使用する場合は、$_SESSIONから直接削除する必要があります。配列と変数は各呼び出しの間に「消える」ので、他のものはまったく役に立たない。

于 2012-05-04T13:38:16.003 に答える
1

主にexplode関数の問題であり、2番目のパラメーターが欠落しています。

から変更する:

$array = explode($val);

に:

$array = explode('~',$val);  // ~ is a delimiter
于 2012-05-04T13:48:45.367 に答える