我有一个数据库表,其中一列是选项,另一列代表该选项的选项值。例子:
Options: Option Values
Color - Red
Color - Blue
Size - Large
Size - Small
如何循环遍历数据到可以填充选项分组的选择框的位置,例如:
Color:
Red
Blue
Size:
Large
Small
提前致谢!
循环遍历每一行,并使用 PHP 的 [] 数组运算符和您的选项名称作为多维数组的键。
foreach($yourRows as $data) {
if (!isset($options[$data['option']])) {
$options[$data['option']] = array();
}
$options[$data['option']][] = $data['value'];
}
这将创建一个二维数组,其中第一级是关联的,以选项名称为键,每个键都包含该选项值的数字索引数组。
结果数组看起来是这样创建的:
$options = array(
"color" => array("red", "blue"),
"size" => array("small", "large")
);
然后根据需要像这样迭代选项:
echo '<select name="options" multiple="multiple">';
foreach($options as $option_type => $available_options) {
printf('<optgroup label="%s">', $option_type);
foreach($available_options as $avail)
printf('<option value="%s">%s</option>', $avail, $avail);
echo '</optgroup>';
}
echo '</select>';
这将创建一个在 Safari 中呈现这样的选择(我选择了红色和大号):
如果您想<select>
为每个显示框,我会执行以下操作:-
(确保ORDER BY 'Options'
或类似取决于您的数据库)
$previous_option = "";
$count = 0;
foreach($data as $row){
if($row['options'] != $previous_option){
if($count>0){
echo '</select>'.$row['options'].': <select name="'.$row['options'].'">';
} else {
echo $row['options'].': <select name="'.$row['options'].'">';
}
}
echo '<option>'.$row['value'].'</option>';
$count++;
$previous_option = $row['options'];
}
$data
=您的数据库结果。$row['options']
= 数据库列“选项”。$row['value']
= 数据库列“选项值”$previous_option
= 用于选项“分组”$count
= 用于跟踪第一次迭代