Php 如果选项类型为',如何区分错误答案和正确答案;是或否';或';正确或错误';

Php 如果选项类型为',如何区分错误答案和正确答案;是或否';或';正确或错误';,php,Php,在下面的一段代码中,它根据$OptionType(例如OptionType为a-D,然后显示字母a B C D)显示a-Z的字母列表。然后它会删除正确的答案($dbAnswer),因此只显示不正确的答案 正确答案是B。所以不正确的答案是C D 现在这对字母来说很好用 我遇到的问题是,如果选项为真或假或是或否,它不会从错误答案中删除正确答案?例如,如果选项类型为真或假,如果真正确且假不正确,则它应该只显示假答案,而同时显示答案真和假。如果选项类型为真或假或是或否,我如何仅分割错误答案和正确答案 代

在下面的一段代码中,它根据
$OptionType
(例如OptionType为a-D,然后显示字母a B C D)显示a-Z的字母列表。然后它会删除正确的答案(
$dbAnswer
),因此只显示不正确的答案

正确答案是
B
。所以不正确的答案是C D

现在这对字母来说很好用

我遇到的问题是,如果选项为
真或假
是或否
,它不会从错误答案中删除正确答案?例如,如果选项类型为
真或假
,如果
正确且
不正确,则它应该只显示
答案,而同时显示答案
。如果选项类型为
真或假
是或否
,我如何仅分割错误答案和正确答案

代码如下:

   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;

      } 
$specialOptionTypes=array('Yes或No'=>array('Yes','No'),'True或False'=>array('True','False');
而($stmt->fetch()){
//对每行执行以下操作:
如果(数组\键\存在($dbOptionType,$specialOptionTypes)){
$options=$specialOptionTypes[$dbOptionType];
}else if(preg_match('/^([A-Z])-([A-Z])$/',$dbOptionType,$match)){
$options=范围($match[1],$match[2]);
}否则{
//发出有关无法识别的选项类型的警告
$options=array();
}
$right=$dbAnswer;//$right='True';
foreach($options作为$option){
//重复“错误”的答案
如果($option!==$right){
echo$选项。“
”; } } $error=数组_diff($options,$right); $error_ans[]=$error; }
如果要将“True”或“False”保存为数据库中的字符串,请确保在PHP中进行了正确的比较。True/False本质上是不同的数据类型(布尔值而不是字符串):


我认为他想回应错误的答案,所以
($option!=$right)
…我认为,这个问题有点难以理解+1我可以询问如何在我的代码中实现您的代码,因为正如您所看到的,我有三种不同的选项类型
True或False
Yes或No
,或者字母选项,它们是任何选项类型,例如
A-C
A-D
A-E
等。是的,我想重复错误的回答。请使用上述代码,并告诉我您的进展情况。应该发生的是,它将从数据库中检索正确的答案(例如“False”),并对每个选项进行严格的比较。如果该选项未能通过比较(即,它是不正确的),它将发出回声。在我看来,他为此经历了很多。你能告诉我们更多的实际查询吗。我想您可以使用
str\u replace
并大大简化它。我想我所需要的只是我的旧代码和更改
$right=str\u split($dbAnswer)
$right=array($dbAnswer)这就是所有需要做的事情
$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.