Php 如何通过了解完整选项类型来显示单个选项
我在下面有一个示例数据库: 问题表:Php 如何通过了解完整选项类型来显示单个选项,php,html,mysqli,Php,Html,Mysqli,我在下面有一个示例数据库: 问题表: QuestionId (PK auto) QuestionNo OptionId (FK) 11 1 1 12 2 3 13 3 26 选项表 OptionId OptionType 1 A-C 2 A-D 3
QuestionId (PK auto) QuestionNo OptionId (FK)
11 1 1
12 2 3
13 3 26
选项表
OptionId OptionType
1 A-C
2 A-D
3 A-E
4 A-F
...
25 True or False
26 Yes or No
现在,我在下面展示了每个问题编号及其识别的选项类型A:
foreach ($arrQuestionId as $key=>$question) {
?>
<p><?php echo htmlspecialchars($arrQuestionNo[$key]) . ": " . htmlspecialchars($arrOptionType[$key]); ?></p>
<?php
}
?>
但我想做的是现在通过确定完整选项类型来显示每个独立选项。例如,如果选项类型为A-C,则应显示B C;如果选项类型为A-E,则应显示A B C D E;如果选项类型为是或否,则应显示是或否
每个独立选项都应显示为复选框。因此,如果你有一个B C,那么它应该是:
复选框
B复选框
C复选框
我的问题是如何实现这一点?一种方法是对字符使用分解运算符和增量运算符的组合。例如:
<?php
$questions = array(
array(1, "A-E"),
array(2, "Yes or No"),
array(3, "A-C"),
array(4, "True or False")
);
foreach ($questions as $question) {
echo $question[0] , ': ' , ExpandOptionType($question[1]), '<br/>';
}
function ExpandOptionType($option) {
$options = explode('-', $option);
if(count($options) > 1) {
$start = array_shift($options);
$end = array_shift($options);
do {
$options[] = $start;
}while(++$start <= $end);
}
else{
$options = explode(' or ', $option);
}
return implode(" ", $options);
}
?>
<?php
$questions = array(
array(1, "A-E"),
array(2, "Yes or No"),
array(3, "A-C"),
array(4, "True or False")
);
foreach ($questions as $question) {
echo $question[0] , ': ' , ExpandOptionType($question[1]), '<br/>';
}
function ExpandOptionType($option) {
$options = explode('-', $option);
if(count($options) > 1) {
$start = array_shift($options);
$end = array_shift($options);
do {
$options[] = $start;
}while(++$start <= $end);
}
else{
$options = explode(' or ', $option);
}
return implode(" ", $options);
}
?>
1: A B C D E
2: Yes No
3: A B C
4: True False