下拉列表多次显示值

时间:2014-04-23 09:31:20

标签: php html arrays

我在php中有一个数组 - array我正在使用以下代码为这个数组创建一个下拉列表 -

<html>
<head>
</head>
<body>
<form method="post" action="test.php">
<select name="feature" id="Feature">
        <?php
        $i=0;
        foreach($newFeature as $feat)
        {
            ?>
        <option value="<?php echo $feat;?>"><?php echo $newFeature[$i];?></option>
            <?php
        $i++;
       }
         ?>
</select> <input type="submit" name="submit" value="Test">
</form>
</body>
</html>

下拉列表包含两次值。在遍历数组并显示值之后,代码再次遍历该值并再次显示它们。

我在这里做错了什么? 请指导。

5 个答案:

答案 0 :(得分:1)

在我的演出中,你对foreach和for循环有点混淆。

在你的情况下,说$ newFeature [$ i]或$ feat实际上是指同一件事。

因此,试试这个:

<html>
<head>
</head>
<body>
<form method="post" action="test.php">
<select name="feature" id="Feature">
        <?php
        foreach($newFeature as $feat)
        {
            ?>
        <option value="<?php echo $feat;?>"><?php echo $feat;?></option>
            <?php
       }
         ?>
</select> <input type="submit" name="submit" value="Test">
</form>
</body>
</html>

答案 1 :(得分:0)

向我们展示$ newFeature数组。另外,为什么需要$ i变量?

$newFeature[$i]

答案 2 :(得分:0)

这是一种更清晰的生成列表的方法,也是您以错误的方式使用每个列表。

<form method="post" action="test.php">
    <select name="feature" id="Feature">
    <?php foreach($newFeature as $feat): ?>
        <option value="<?php echo $feat; ?>"><?php echo $feat; ?></option>
    <?php endforeach; ?>
    </select> 
    <input type="submit" name="submit" value="Test">            
</form>

答案 3 :(得分:0)

如果您使用foreach无需计算,则应使用$feat代替

<?php
foreach($newFeature as $feat)
{
    ?>
<option value="<?php echo $feat;?>"><?php echo $feat;?></option>
    <?php
   }
?>

答案 4 :(得分:0)

使用$ newFeature [$ i]是一种使用foreach循环的错误方法。 请发布阵列快照或尝试以下内容。

调试并纠正问题

  1. 在使用foreach之前打印$ newFeatures数组并调试代码。

  2. 2.在foreach循环前面添加以下行

    <?php $newFeature = array_unique($newFeature); ?>
    

    这种方式可能会解决您的问题。我仍然建议您使用第一个建议并调试代码。