【发布时间】:2013-01-15 22:24:21
【问题描述】:
在下面的一段代码中,它根据$OptionType 显示从 A-Z 的字母列表(例如,OptionType 是 A-D,然后它显示字母 A B C D)。然后它会删除正确答案 ($dbAnswer),因此它会显示不正确的答案。
例如,正确答案是B。所以它显示的错误答案是 A C D。
现在这适用于字母。
我遇到的问题是,如果选项是True or False 或Yes or No,它不会从错误答案中删除正确答案?例如,如果选项类型是True or False,如果True 正确而False 不正确,那么它应该只显示False 答案,而是同时显示True 和False 答案。如果选项类型为True 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;
}
【问题讨论】:
标签: php