用于HTML的PHP​​数组选择不允许重复'value =“

时间:2013-05-26 13:26:13

标签: php html forms

我创建了一个简单的PHP数组,我希望在Web表单上使用选择输入(选择输入以前在HTML中是硬编码的)。这是阵列:

$fruits = array( 
                    'fruit' => 'apple',
                    'fruit' => 'orange',
                    'vegetable' => 'potato'
        );

这是选择输入:

<label for="Food">Select the Food</label><br>



                <select id="Subdiscipline" name="Subdiscipline">
                        <option value="*">- No Selection - </option>
                        <?php 
                            $output = "";
                            $selected = false;

                        foreach($fruits as $fruit => $value) {

                             $fruit = htmlspecialchars($fruit);

                             $output .= "<option value=\"$fruit\"";

                              if ($fruit == $previousFruitSelection) {
                                  $selected = true;
                                  $output .= " selected";
                              }
                              $output .= ">$value</option>";

                        }
                        echo $output;

                            ?>
                    </select>

现在的问题是我不再硬编码选择菜单的选项是'apple'的选项不再出现,大概是因为你不能在数组中有重复的键。有没有办法解决这个问题,使用PHP创建一个用于驱动选择选项的数组,但允许多个选项使用相同的'value = fruit'?

2 个答案:

答案 0 :(得分:2)

您可以使用多维数组:

    $fruits = array( 
                'fruit' => array ('apple', 'orange')
                'vegetable' => array ('potato')
    );

Ofc你也必须改变循环并迭代内部数组。

keys 是唯一的;)

答案 1 :(得分:1)

PHP数组是一个简单的关联数组。它将键与值匹配,因此您不能在数组中有2个水果,因为键的点是唯一的,以便能够识别数组中的某个元素。

然而,有多种方法可以解决这个问题。最容易想到的是制作2个数组,一个用于“键”,一个用于“值”。所以第一个数组是水果,水果,蔬菜,第二个是苹果,橙子,土豆。

您也可以使用更复杂的数据结构,但我可能会做的是将数组指定为值。你可以这样做,数组中的数组。要检查它是如何以语法方式完成的,请查看php.net,更具体地说,请查看以下链接中的示例#6,我相信这可能会帮助您: http://php.net/manual/en/language.types.array.php