从数组填充下拉列表

时间:2014-01-31 07:22:29

标签: php arrays drop-down-menu

我有以下代码......

$all  = $ent->getAll($fed_code);

 Array ( [NC] => Array (
    [101] => banana,
    [102] => orange,
    [103] => apple,
    )
    )


$select  = $ent->getSelected($fed_code);

Array
(
[101] => banana,
)

我想要的是如果在$ all数组中找到$ select值,则按所选值填充下拉列表。 这是我目前的代码

<?php
    foreach ($all as $orgKey => $list) { 
?>
<tr><td width="5%">
        <h5>Extra Fruits</h5>
    </td>
    <td width="10%">
        <label class="control-label">Fruits</label>
        <select class="input-xlarge" id="input" name="ent[]">   
            <option value="">Select</option>';

            <?   foreach ($list as $key => $value) { 
                    $selected = in_array($select, $key)?'selected="selected"':'';
                    echo $selected;
                ?>

                <option <?=$selected?> value="<?=$key?>"><?=$value?></option>
                <? } ?>
        </select>
    </td>
                        </tr>

但是,似乎有些不对劲,它没有选择任何东西。 有人有想法吗?

2 个答案:

答案 0 :(得分:1)

你真的需要里面的foreach吗? 我尝试了这个,它已经可以打印您的选择与$ select中的选择。

<select class="input-xlarge" id="input" name="ent[]">   
    <? foreach ($all as $orgKey => $list) {
        $selected = in_array($select, $list) ? 'selected="selected"' : '';
    ?>
       <option <?=$selected?> value="<?=$orgKey?>"><?=$list?></option>
    <? } ?>
</select>

我刚刚意识到我已经互换了in_array的参数。这应该做到这一点。我还在select标签中添加了多个选项,因此如果我们选择了多个选项,它将会显示出来。

<select multiple class="input-xlarge" id="input" name="ent[]">   
    <? foreach ($all as $orgKey => $list) {
        $selected = in_array($list, $select) ? 'selected="selected"' : '';
    ?>
       <option <?=$selected?> value="<?=$orgKey?>"><?=$list?></option>
    <? } ?>
</select>

如果您不想使用多个,那么测试为正数的最后一项将是html中显示的选项。

答案 1 :(得分:0)

打印$selected会产生什么?另外,从select标签中选择一个选项,不是语法如下:

<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="vw">VW</option>
<option value="audi" selected>Audi</option>
</select>

而不是selected="selected"