0

下面的代码的作用是检索完整选项类型中的各个选项。例如,如果 $option 是 AD,那么通过使用explode,它将能够显示每个单独的选项以输出 ABC D。

现在在这个例子中,我希望 ABCD 每个都有自己的复选框。但是使用下面的代码,它只是为 A 和 D 创建复选框,它应该为A, B, C,执行第一个和最后一个选项D。如何才能做到这一点?

function ExpandOptionType($option) { 
    $options = explode('-', $option);
    foreach($options as $indivOption) {
        echo '<p><input type="checkbox" name="options[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><label for="option-' . $indivOption . '">' . $indivOption . '</label></p>';
    }
    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);
}
4

2 回答 2

1

好吧,我不太确定if-else你的函数的作用是什么,但这是你在想的吗?

<?php foreach (range('A','D') as $letter): ?>
  <p>
    <input type="checkbox" name="options[]" id="option-<?php echo $letter ?>" value="<?php echo $letter ?>" />
    <label for="option-<?php echo $letter ?>"><?php echo $letter ?></label>
  </p>
<?php endforeach ?>

或者,在一个函数中:

function ExpandOptionType($from, $to) {
    $output = '';
    $range = range($from, $to);
    foreach ($range as $letter) {
        $output .= '<p>';
        $output .= "<input type=\"checkbox\" name=\"options[]\" id=\"option-{$letter}\" value=\"{$letter}\" />";
        $output .= "<label for=\"option-{$letter}\">{$letter}</label>";
        $output .= '</p>';
    }
    return $output;
}
echo ExpandOptionType('A', 'D');
于 2013-02-08T04:16:22.183 回答
1
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);
     }
     foreach($options as $indivOption) {
         echo '<p><input type="checkbox" name="options[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><label for="option-' . $indivOption . '">' . $indivOption . '</label></p>';
     }
     return implode(" ", $options);
}

这样,您首先更改选项数组,然后创建复选框。

于 2013-02-08T07:20:05.630 回答