У меня небольшая проблема с множественным сравнением значений с 2 матрицами.
У меня есть таблица HTML:
<table style="border:0px solid;" border="0" class="tema_d_tabel1">
<tr><td>A</td><td>:</td><td><input type="text" maxlength="12" id="d011" /></td></tr>
<tr><td>B</td><td>:</td><td><input type="text" maxlength="12" id="d021" /></td></tr>
<tr><td>C</td><td>:</td><td><input type="text" maxlength="12" id="d031" /></td></tr>
<tr><td>D</td><td>:</td><td><input type="text" maxlength="12" id="d041" /></td></tr>
</table>
<button id="tema_d_verif1" onclick="casute()">Verifica</button>
<button id="tema_d_finaliz1" style="display:none">Continua</button>
Имеет 4 входа, в которые пользователь может писать числа, разделенные запятыми.
Я написал JavaScript:
function casute() {
var d1 = $("#d011").val();
var d2 = $("#d021").val();
var d3 = $("#d031").val();
var d4 = $("#d041").val();
d1 = d1.split(",");
d2 = d2.split(",");
d3 = d3.split(",");
d4 = d4.split(",");
//alert(d3.length);
if ((d1.length == 2) && (d2.length == 2) && (d3.length == 4) && (d4.length == 1)) {
caz = 1;
} else if ((d1.length == 1) && (d2.length == 3) && (d3.length == 4) && (d4.length == 1)) {
caz = 2;
}
if (caz == 1) {
var arrays = [];
$(".tema_d_tabel1 input[id^='d0']").each(function () {
xy = $(this).attr("id");
arrays.push(xy + "@" + $.trim($(this).val()));
});
$.ajax({
type: "POST",
url: "lab2/4a2.php",
data: {
request: arrays
},
success: function (data) {
$(".tema_d_tabel1 input[id^='d0']").addClass("corect");
$(data).removeClass("corect").addClass("gresit");
var rGresit = data.split(',');
if (data === '') {
$(".tema_d_tabel1 input[id^='d0']").attr("disabled", "true");
$("#tema_d_verif1").hide();
$("#tema_d_finaliz1").show();
} else {
$("#tema_d_verif1").show();
}
}
}); //ajax
} //caz=1
else if (caz == 2) {
var arrays = [];
$(".tema_d_tabel1 input[id^='d0']").each(function () {
xy = $(this).attr("id");
arrays.push(xy + "@" + $.trim($(this).val()));
});
$.ajax({
type: "POST",
url: "lab2/4a1.php",
data: {
request: arrays
},
success: function (data) {
$(".tema_d_tabel1 input[id^='d0']").addClass("corect");
$(data).removeClass("corect").addClass("gresit");
var rGresit = data.split(',');
if (data === '') {
$(".tema_d_tabel1 input[id^='d0']").attr("disabled", "true");
$("#tema_d_verif1").hide();
$("#tema_d_finaliz1").show();
} else {
$("#tema_d_verif1").show();
}
}
}); //ajax
}
}
и два PHP-файла:
4a1.php:
<?php
if (isset($_POST['request']) && !empty($_POST['request'])) {
$answer = $_POST['request'];
// array with correct answers
// it could be complicated but this is useful
$return_arr = array(
"d011@1",
"d021@2,3,4",
"d023@5,6,7,8",
"d024@-"
);
$wrong = array();
for ($i = 0; $i < count($return_arr); $i++) {
if ($return_arr[$i] != $answer[$i]) {
$xy = substr($answer[$i], 0, strpos($answer[$i], "@"));
$wrong[] = "#" . $xy;
}
}
echo implode(', ', $wrong);
}
?>
4a2.php
<?php
if (isset($_POST['request']) && !empty($_POST['request'])) {
$answer = $_POST['request'];
// array with correct answers
// it could be complicated but this is useful
$return_arr = array(
"d011@1,2",
"d021@3,4",
"d023@5,6,7,8",
"d024@-"
);
$wrong = array();
for ($i = 0; $i < count($return_arr); $i++) {
if ($return_arr[$i] != $answer[$i]) {
$xy = substr($answer[$i], 0, strpos($answer[$i], "@"));
$wrong[] = "#" . $xy;
}
}
echo implode(', ', $wrong);
}
?>
Я хочу сравнить эти 4 ввода HTML с двумя матрицами, описанными и определенными в PHP, но я не могу.
Например:
Я должен думать, что пользователь может написать как (первый случай):
A: 1
B: 2,3,4
С: 5,6,7,8
D: -
но они также могут писать как (второй случай):
A: 1,2
B: 3,4
С: 5,6,7,8
D: -
Как сравнить 4 входных значения с одним из правильной матрицы? Первый случай должен сравниваться с одной матрицей, второй случай должен сравниваться с другой матрицей из того же PHP-файла (ну, я создал 2 PHP-файла, когда кодировал JavaScript, чтобы вычислить длину этих входных данных, но я хочу один PHP-файл для этого).