2014-04-23 321 views
0

我在PHP中有一個陣列 - array,我使用的follwing代碼來創建此陣列的下拉列表 -下拉列表中顯示值多次

<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> 

下拉列表中包含值兩次。在遍歷數組一次並顯示值之後,代碼再次遍歷該值並再次顯示它們。

我在做什麼錯在這裏?請指導 。

+0

你在哪裏定義了$ newFeature? – Jenz

+0

它是一個數組[新功能](http://pastebin.com/cdvsD8mz) – Satish

+1

好的,但它在哪裏?另外,如果您使用索引$ i,則使用foreach有什麼意義?除非$ newFeature是一個維數組(並且,在這種情況下,如果它是一個維數組,您甚至不能正確訪問它),因爲$ feat與$ newFeature [$ i相同] – briosheje

回答

0

向我們展示$ newFeature數組。另外,爲什麼你需要$ i變量?

$newFeature[$i] 
+0

$ newFeature - (http://pastebin.com/cdvsD8mz) – Satish

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> 
+0

甚至這顯示值兩次..:( – Satish

+0

你可以嘗試使用函數array_unique(),無論如何,這是不應該需要的,如果該數組是你發佈的數組。 foreach(array_unique($ newFeature)as $ feat) – EveryWell

1

在我的hopinion中,你對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> 
0

如果您正在使用foreach不需要計數,你應該使用$feat代替

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

使用$ newFeature [$ i]爲一個錯誤的方式使用foreach循環。 請發佈數組的快照或嘗試以下操作。

調試和使用foreach和調試代碼之前糾正問題

  1. 打印$ newFeatures陣列。

    或者

2.添加在foreach循環

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

這樣可能會解決你的問題面前下面一行。我仍然建議你使用第一個建議並調試你的代碼。