Php jquery将每个循环放入一个多数组中,检查重复项

Php jquery将每个循环放入一个多数组中,检查重复项,php,jquery,ajax,arrays,session,Php,Jquery,Ajax,Arrays,Session,我想我想做的事情很简单,但却无法实现。我在一个表中循环,从现有行中获取一些值,这部分工作正常。然后我使用AJAX尝试创建一个没有重复项的多维数组,但有些东西不起作用。我真正想做的是删除重复的部分,对数组重新排序,并推送新值。以下是我所拥有的: 阿贾克斯: PHP: 逻辑有问题吗?看来应该行得通。尝试删除表行时,相同的foreach循环也会起作用。它会找到正确的密钥并将其删除。为什么它在这里不起作用?这是我通过数小时的搜索得到的答案。我避免使用serialize,因为我不知道如何使用它。在JS中,

我想我想做的事情很简单,但却无法实现。我在一个表中循环,从现有行中获取一些值,这部分工作正常。然后我使用AJAX尝试创建一个没有重复项的多维数组,但有些东西不起作用。我真正想做的是删除重复的部分,对数组重新排序,并推送新值。以下是我所拥有的:

阿贾克斯:

PHP:


逻辑有问题吗?看来应该行得通。尝试删除表行时,相同的foreach循环也会起作用。它会找到正确的密钥并将其删除。为什么它在这里不起作用?

这是我通过数小时的搜索得到的答案。我避免使用serialize,因为我不知道如何使用它。在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);
}

所以我只是清除session变量并添加新值。这就消除了所有的检查和清理,以及所有这些。我相信有更好的方法可以做到这一点,但这种方法是短而有效的,这就是我正在寻找的。希望这对别人有帮助

你可以澄清一下吗?什么部分起作用?PHP?与此同时,我注意到您正在为每个“#table.mainTR”触发$.ajax。第一步可能是准备一个数据结构并通过$.ajax发送一次。工作的部分是在jQuery中获得正确的行数据。是的,我注意到它被发射的次数和排的次数一样多。你建议我怎么准备?将数据组合在一起,然后在PHP中分离?将请求序列化为JSON,在PHP中通过
JSON\u decode
对其进行反序列化。另外,不要使用
async:false
。谢谢你的建议。现在调查一下。但是PHP部分呢?我哪里出了问题?它以什么方式不起作用?会话变量中应该放什么,而您得到的是什么?
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}
    });
}
if(isset($_POST['ch']) && (!empty($_POST['ch']))){
    unset($_SESSION['check']);
    $_SESSION['check'] = array_chunk($_POST['ch'], 3);
}