1

我在下面有一个示例数据库:

问题表:

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

}

?>

所以输出看起来像这样:

1: A-C
2: A-E
3: Yes or No

但是我想做的是现在通过确定完整的选项类型来显示每个单独的选项。例如,如果选项类型是A-C,那么它应该显示A B C,如果选项类型是A-E显示A B C D E,如果选项类型是Yes or No,那么显示Yes No

每个单独的选项都应显示为一个复选框。所以如果你有A B C,那么它应该是:

A(复选框) B(复选框) C(复选框)

我的问题是如何实现这一目标?

4

1 回答 1

0

一种方法是在字符上结合使用explode 和increment 运算符。例如:

<?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
于 2013-02-07T08:29:29.420 回答