PHP多维数组数组处理

时间:2018-06-05 01:42:15

标签: php jquery mysql ajax

我想问一下,如何处理AJAX发送到PHP文件的多维数组,然后将它们与数据库进行比较。 我搜索了很多,但我找不到一个很好的解决方案。 问题是数组包含10个问题ID和问题的选定答案。 如果它有帮助,下面是代码。提前谢谢。

$("#next_step").click(function() {
    var object = {};
    $("ul.question").each(function() {
        var prasanje = $(this).attr("questionid");
        var odgovor = $("ul#prasanje_" +prasanje+ " > label.answer > li.answer > input.answer:checked").val();
        object[prasanje] = odgovor;
    });
    console.log(object);
    $.ajax ({
        method: "POST",
        url: "procesi.php",
        data: {proces: "proverka_odgovor", data: object},
        success: function(data) {
            console.log(data);
            if(data < 8) {
                var rezultat = 10 - data;
                $("#error_box").show();
                $(".info_text").html("Имате [" +rezultat+"] грешни прашања. Потребно е да имате миниум 8 точни прашања за да продолжите на втор степен на регистрацијата!");
            } else {
                $("#first_step_box").hide();
                $("#second_step_box").show();
            }
        }
    });
});



 if($_POST["proces"] == "proverka_odgovor") {
    $rezultat = 0;
    $niza_glavna = json_encode($_POST["data"]);
    $data = json_decode($niza_glavna, TRUE);
    foreach ($data as $kviz) {
        $prasanje = $kviz[0];
        $odgovor = $kviz[1];
        $proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id = '$prasanje' AND tocenodgovor = '$odgovor'");
        if(mysqli_num_rows($proverka) > 0) {
            $rezultat++;
        }
    }
    echo $rezultat;
}

这是ajax发送的内容。我该如何处理这个数组

{3: "1", 4: "1", 8: "1", 9: "1", 10: "1", 13: "1", 15: "1", 16: "1", 23: "1", 26: "1"}

1 个答案:

答案 0 :(得分:1)

您正在处理一个简单的数组,以JSON格式发送。你想解码它并从那里开始。

$data = json_decode($niza_glavna, TRUE);

$ids = array_keys($data);
$vals = array_values($data);

上面提取了单独数组中的键和值,您只需在查询中运行:

$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id IN (" . implode(',', $ids) . ") AND tocenodgovor IN (" . implode(',', $vals) . ")");

这消除了对任何循环和多个查询的需要。