我认为我想做的事情非常简单,但无法让它发挥作用。我循环遍历一个表并从现有行中获取一些值,该部分有效。然后我使用AJAX尝试制作一个没有重复的多维数组,但有些东西不起作用。我真正想要做的是删除重复的部分,重新排序数组和array_push新值。这就是我所拥有的:
AJAX:
function getData(){
$("#table .mainTR").each(function(){
var key = $(this).find(".key").text();
var sel = $(this).find(".s").val();
var q = $(this).find(".q").val();
$.ajax({
type: "POST",
async: false,
data: {key: key, s: sel, q: q}
});
});
}
PHP:
if(isset($_POST['key'])){
$title = $_POST['key'];
$s = $_POST['s'];
$q = $_POST['q'];
if(!empty($_SESSION['check'])){
foreach ($_SESSION['check'] as $key=>$value){
if(in_array($title, $value)){
unset ($_SESSION['check'][$title]);
$_SESSION['check'] = array_values($_SESSION['check']);
array_push($_SESSION['check'], array("key"=>$title, "s"=>$s, "q"=>$q));
}
}
}else{
$_SESSION['check'] = array(array("key"=>$title, "s"=>$s, "q"=>$q));
}
}
逻辑有问题吗?它似乎应该工作。尝试删除表格行时,相同的foreach循环有效。它找到正确的KEY并删除它。为什么不在这里工作?
答案 0 :(得分:0)
以下是我按小时和数小时搜索得到的答案。我避免使用序列化...因为我不明白如何使用它。在JS中,我循环查找表中的值并创建这样的数组:
function getData(){
var checkArray = new Array();
$("#shopCart .mainTR").each(function(){
var key = $(this).find(".key").text();
var sel = $(this).find(".s").val();
var q = $(this).find(".q").val();
checkArray.push(key);
checkArray.push(sel);
checkArray.push(q);
});
$.ajax({
type: "POST",
data: {ch: checkArray}
});
}
在我的PHP中,我发现了一个很酷的技巧。由于我正在控制数组中的数据,因此我知道它中将包含多少个值。我找到的技巧是“array_chunk”,所以对于我正在做的3个值:
if(isset($_POST['ch']) && (!empty($_POST['ch']))){
unset($_SESSION['check']);
$_SESSION['check'] = array_chunk($_POST['ch'], 3);
}
所以我只是清除会话变量并添加新值。这消除了所有检查和清除以及所有这些。我确信有更好的方法可以做到这一点,但这种方法很简短,有效,这就是我正在寻找的。希望这有助于某人!