0

在下面的一段代码中,它显示来自 AZ 的字母列表,具体取决于$OptionType(例如 OptionType 是 AD,然后显示字母 ABCD)。然后它会删除正确的答案 ( $dbAnswer),因此它会显示不正确的答案。

例如,正确答案是B。所以它显示的不正确答案是AC D。

现在这适用于字母。

True or False我遇到的问题是,如果选项是或,它不会从错误答案中删除正确答案Yes or No?例如,如果选项类型是True or False,如果True是正确的和False不正确的,那么它应该只显示False答案,而是同时显示答案TrueFalseTrue 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;

      } 

更新:

$specialOptionTypes = array('Yes or No' => array( 'Yes', 'No' ),'True or False' => array( 'True', 'False' ));

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 = $dbAnswer; // $right = 'True';

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


        $incorrect_ans[] = $wrong;

      } 
4

1 回答 1

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.
于 2013-01-15T22:29:22.407 回答