Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP多维数组处理_Php_Jquery_Mysql_Ajax - Fatal编程技术网

PHP多维数组处理

PHP多维数组处理,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我想问,如何处理AJAX发送到PHP文件的多维数组,然后将它们与数据库进行比较。 我找了很多,但找不到一个很好的解决办法。 问题是数组包含其中10个问题的问题id和问题的选定答案。 下面是代码,如果有帮助的话。提前谢谢 $("#next_step").click(function() { var object = {}; $("ul.question").each(function() { var prasanje = $(this).attr("question

我想问,如何处理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;
}

您正在处理一个简单的数组,作为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) . ")");

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

将对象作为JSON传递,并在服务器端使用
JSON\u decode($JSON,true)
。如果您提供发布的数据示例,人们会更容易帮助您。为什么需要先编码,然后解码?如果将其作为json字符串,只需单独解码,然后在PHP中只需简单的平面数组,在
if
语句之前或
if
语句内部添加
var\u dump($\u POST)
,然后将结果添加到此问题。否则,不清楚jQuery和PHP之间发生了什么。(注意:您说过“我如何处理这个数组”,但提供了一个javascript对象-我们需要看看PHP接收到了什么,以便为您提出的问题提供答案)根据我的经验,通过jQuery将对象作为
数据
传递给jQuery会导致在
$\u POST
中将其转换为键值对。。。在我看来,OP并没有证明通过AJAX收到了什么。@cale_b同意,答案主要基于OP在更新中提供的数据,他发布的JSON也似乎无效。他似乎在做一些有趣的事情
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id IN (" . implode(',', $ids) . ") AND tocenodgovor IN (" . implode(',', $vals) . ")");