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

以下に、各質問番号と、認識されているオプションのタイプを示します。

 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

1 つの方法は、文字に対してエクスプロージョン オペレータとインクリメント オペレータを組み合わせて使用​​することです。例えば:

<?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 に答える