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.