以下のコードでは、内破と爆発を使用し、各質問のオプション タイプを見つけることで、完全なオプション タイプから個々のオプションを取得しようとしています。
たとえば、次のようになります。
A-E
作りますA B C D E
A-C
作りますA B C
True or False
作りますTrue False
Yes or No
作りますYes No
これは以下のコードで動作します。
<?php
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);
}
foreach ($arrQuestionId as $key=>$question) {
?>
<div class='lt-container'>
<p><?php echo htmlspecialchars($arrQuestionNo[$key]) . ": " . htmlspecialchars($arrQuestionContent[$key]); ?></p>
<p><?php echo ExpandOptionType(htmlspecialchars($arrOptionType[$key])); ?></p>
</div>
<?php
}
?>
しかし、私がやりたいのは、個々のオプションを文字列だけで表示するだけでなく、チェックボックスとして表示したいということです。しかし、以下の私の試みはうまくいきませんでした。チェックボックスを表示するにはどうすればよいですか? 実際に次のような警告が表示されます。Warning: explode() expects parameter 3 to be long, string given in ... on line 241
function ExpandOptionType($option) {
$options = explode('-', '<input type=\"checkbox\" name=\"anstype\" class=\"answers\" id=\"answer".$option."\" name=\"answerName[$option]\" value=\"$option\" />', $option);
//LINE 241
if(count($options) > 1) {
$start = array_shift($options);
$end = array_shift($options);
do {
$options[] = $start;
}while(++$start <= $end);
}
else{
$options = explode(' or', '<input type=\"checkbox\" name=\"anstype\" class=\"answers\" id=\"answer".$option."\" name=\"answerName[$option]\" value=\"$option\" />', $option);
}
return implode(" ", $options);
}
?>