Мне сложно сопоставить $ _POST от пользовательского ввода до набора значений массива.
Я установил следующую переменную …
$response = $_POST['answer'];
… и выбрал ряд возможных правильных ответов и сохранил их в массиве …
$solutions = array('answer1','answer2','answer3');
Я попытался проверить / сравнить это …
if (value($response) !== ($solutions) {$error['result'] = "Wrong answer.";}
Я знаю, что это строка if (value($response) !== ($solutions)
.
in_array()
– ваш друг:
$correct = in_array($response, $solutions);
Если вы хотите сравнить значения массива; как писал харакири in_array () , ваш друг.
Однако, если вы хотите сравнить ключи массива, вы должны использовать; array_key_exists ()
Я хотел бы предупредить вас, если ваш массив содержит много информации, проверяющей его с помощью функции in_array (), замедлит вас.
Вместо этого вам нужно будет пойти с isset (), чтобы проверить, установлен ли он, это намного быстрее, чем in_array ().
$answer = false; foreach ($solutions as $sol) { if ($sol == $_POST['answer']) { $answer = $sol; break; } } if ($answer) { //GOOD } else { $error['result'] = "Wrong answer." }