如果选项类型为“是或否”或“正确或错误”,如何分隔不正确和正确的答案

时间:2013-01-15 22:24:22

标签: php

在下面的一段代码中,它根据$OptionType显示来自A-Z的字母列表(例如,OptionType是A-D,然后它显示字母A B C D)。然后它会删除正确的答案($dbAnswer),以便显示错误的答案。

E.g正确答案是B。所以它显示的错误答案是A C D。

现在这适用于字母。

我遇到的问题是,如果选项为True or FalseYes or No,则无法从错误答案中删除正确答案?例如,如果选项类型为True or False,如果True正确且False不正确,那么它应该只显示False答案,而是显示两个答案{{1 }和True。如果选项类型为FalseTrue or False,我该如何才能分割错误且正确的答案。

以下是代码:

Yes or No

更新

   while ($stmt->fetch()) {

// Do this for each row:
if ( array_key_exists( $dbOptionType, $specialOptionTypes ) ) {
    $options = $specialOptionTypes[$dbOptionType];
} else if ( preg_match( '/^([A-Z])-([A-Z])$/', $dbOptionType, $match ) ) {
    $options = range( $match[1], $match[2] );
} else {
    // issue warning about unrecognized option type
    $options = array();
}
$right = str_split( $dbAnswer ); 
$wrong = array_diff( $options, $right );  

        $incorrect_ans[] = $wrong;

      } 

1 个答案:

答案 0 :(得分:2)

如果您在数据库中将'True'或'False'保存为字符串,请确保在PHP中进行正确的比较。 True / False本质上是一种不同的数据类型(布尔值而不是字符串):

$right = $dbAnswer; // $right = 'True';

foreach ($options as $option) {
   // To echo out 'wrong' answers
   if ($option !== $right) {
      echo $option . '<br>';
   } 
}

=====之间的区别在于后者不仅比较了值,还比较了数据类型。


foreach ($options as $option) {
   // To echo out 'wrong' answers
   if ($option !== $right) {
      $incorrectAnswersArray[] = $option;
   } 
}

// You now have all the incorrect answers in $incorrectAnswersArray
$firstIncorrectAnswer = $incorrectAnswersArray[0];
$secondIncorrectAnswer = $incorrectAnswersArray[1];
// etc.