jquery每个循环进入一个多数组,检查重复

时间:2013-05-12 14:21:27

标签: php jquery ajax arrays session

我认为我想做的事情非常简单,但无法让它发挥作用。我循环遍历一个表并从现有行中获取一些值,该部分有效。然后我使用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并删除它。为什么不在这里工作?

1 个答案:

答案 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);
}

所以我只是清除会话变量并添加新值。这消除了所有检查和清除以及所有这些。我确信有更好的方法可以做到这一点,但这种方法很简短,有效,这就是我正在寻找的。希望这有助于某人!