我有以下数组和PHP代码 - 这会在下拉列表中添加option
并且工作正常,但这是一个下拉列表。
但是,我想要实现的是为数组中的数组[0]
中的每个唯一值创建单独的下拉列表。
因此,基于下面的数组,将有三个下拉列表,一个用于ACME,一个用于EDNON,一个用于VALUE,每个列表将填充已包含在下面的PHP代码中的信息。
阵列
Array (
[4f5hfgb] => Array (
[0] => ACME
[1] => 4f5hfgb
[2] => Aberdeen
)
[sdf4ws] => Array (
[0] => ACME
[1] => sdf4ws
[2] => Birmingham
)
[dfgdfg54] => Array (
[0] => EDNON
[1] => dfgdfg54
[2] => Birmingham
)
[345bfg] => Array (
[0] => EDNON
[1] => 345bfg
[2] => Birmingham
)
[345fgfd] => Array (
[0] => VALVE
[1] => 345fgfd
[2] => Birmingham
)
)
PHP
echo "
<span class='Question SelectBox'>
<span class='qnum noshow'></span>
<span class='qtext'>Option</span>
<span class='shown'>
<select class='combobox' id='option' name='option' data-placeholder=\"Option...\" '>
<option value=\"\">Option...</option>";
foreach ($tmp as $value) {
echo "<option name='".$value[0]."' value='".$value[1]."'>".$value[2]."</option>";
}
echo"</select>
</span>
</span>
<span class='clearfix'></span>";
尝试的代码
我尝试修改代码,但这只会产生一个下拉菜单并且选项重复:
foreach ($tmp as $value) {
if($value[0]=='ACME'){
echo "<option name='".$value[0]."' value='".$value[1]."'>".$value[2]."</option>";echo "<option name='".$value[0]."' value='".$value[1]."'>".$value[2]."</option>";
}
}
我很难理解这是否真的可行。欢迎任何建议,反馈和建议。
答案 0 :(得分:1)
像这样的东西
//------------------------------------------------------------
// Original array of data
//------------------------------------------------------------
$a = array(
'4f5hfgb' => array('ACME', '4f5hfgb', 'Aberdeen'),
'sdf4ws' => array('ACME', 'sdf4ws', 'Birmingham'),
'dfgdfg54' => array('EDNON', 'dfgdfg54', 'Birmingham'),
'345bfg' => array('EDNON', '345bfg', 'Birmingham'),
'345fgfd' => array('VALVE', '345fgfd', 'Birmingham'));
//------------------------------------------------------------
// Group the options by 'name'
//------------------------------------------------------------
$aGroupedOptions = array();
foreach($a as $aRawOption) {
list($sName, $sValue, $sOption) = $aRawOption;
$aGroupedOptions[$sName][] = array($sValue, $sOption);
}
//------------------------------------------------------------
// Build the HTML
//------------------------------------------------------------
foreach($aGroupedOptions as $sName => $aOptions) {
echo
'<span class="Question SelectBox">
<span class="qnum noshow"></span>
<span class="qtext">Option</span>
<span class="shown">
<select class="combobox" id="option-' . $sName . '" name="option-' . $sName . '">';
foreach($aOptions as $aOption) {
list($sValue, $sOption) = $aOption;
echo '<option name="'. $sName . '" value="' . $sValue . '">' .
$sOption . '</option>';
echo"</select>
</span>
</span>
<span class='clearfix'></span>";
}
答案 1 :(得分:0)
您需要嵌套foreach
循环。用于创建下拉列表的外部循环和用于创建选项的内部循环:
foreach ($dropdowns as $options) {
echo "<select ....>";
foreach ($options as $option) {
echo "<option>$option</option>";
}
echo "</select>
}
防止XSS攻击!