Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过了解完整选项类型来显示单个选项_Php_Html_Mysqli - Fatal编程技术网

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