检查数组中的值

时间:2013-01-28 16:57:54

标签: php mysql arrays if-statement

希望有人可以提供帮助!

我周末成功完成了我的测验,这是一个10个问题/多项选择/多种答案类型的情景 - 但是今天早上的情况有所改变 -

事实证明问题1例如:

Q How do you make tea
A) Water
B) Teabag
C) Cup
D) Fish Tank

客户希望A B C是正确的答案,还有其他正确的答案,例如: -

A - Is correct + 1 to score
B - Is correct + 1 to score
C - Is Correct + 1 to score
A & B - Is correct  + 1 to score
A & C - Is correct + 1 to score
B & A - Is correct + 1 to score
B & C - Is correct + 1 to score
A & B & C - Is the Jackpot! + 1 to score

在此'修正'之前,我已将结果存储到问题数据库A,B,C中 - 所以一切正常 - 所以我相信我必须'爆炸'原始数组,因此它们是单独的数组元素(I假设这样做会更容易) - 所以我的数组现在看起来像这样:

    Array ( [0] => A [1] => B [2] => C ) 

我试着做一个if if ifted语句:

    if($vex['0'] == 'A')
    {
    echo "Yup, it equals A";
    if($vex['1'] == 'B')
    {
    echo "Yup, it equals B";
    } 

但我意识到数组可能并不总是以[0] =>开头。等等。

可以帮助我并指出正确的方向吗?

对于我来说,将复选框存储为单个值而不是数组并进行检查会更简单吗?

3 个答案:

答案 0 :(得分:1)

使用数组和intersect对它们进行评分:

$user_choices = array('A', 'C');
$valid_choices = array('A', 'B', 'C');

$common = array_intersect($user_choices, $valid_choices); // A,C
$score = count($common); // 2

同样地:

choices A     -> common = A     -> score = 1
choices D     -> common =       -> score = 0
choices A,B,C -> common = A,B,C -> score = 3

答案 1 :(得分:0)

我认为你可以使用in_array()函数。

if(in_array('A',$vex))
{
    echo "Yup, it equals A";
    if(in_array('B',$vex))
    {
        echo "Yup, it equals B";
    }
}

答案 2 :(得分:0)

您可以使用array_intersectin_array

例如,如果他们检查了A和B,并且正确的答案是B和C,那么你可以这样做:

$aAnswers = array('A', 'B');
$aCorrectAnswers = array('B', 'C');
$bSuccess = count(array_intersect($aAnswers, $aCorrectAnswers) || false);
// $bSuccess == true

这会告诉你他们是否至少有一项权利。如果您需要更具体,可以这样做:

$aComparedAnswers = array();
foreach($aAnswers as $sAnswer){
    if(in_array($sAnswer, $aCorrectAnswers)){
        $aComparedAnswers[] = $sAnswer;
    }
}

然后您可以比较比较和正确的数组。如果他们有相同的数量,他们就会得到所有的问题。比较答案的数量将等于正确答案的数量。