2012-09-08 133 views
2

我有一個文本字段,用戶可以輸入逗號分隔列表,然後php將其轉換爲下拉選擇列表但是我想要一個條件,將顯示文本輸入字段,如果只有一個值是進入。我嘗試了下面的代碼,但它只是返回選擇框,即使只有一個條目。我怎樣才能達到這個條件?試圖創建一個數組條件

<?php $listval = explode(",",$vals); 
if(is_array($listval)) { ?> 

<select name="valuelist"> 
<?php 
    foreach($listval as $value) { 
    echo '<option>'.$value.'</option>'; 
} ?> 
</select> 

<?php }else{ ?> 

<input type="text" size="10" name="valuelist" value="<?php echo $vals; ?>" /> 
<?php } ?> 
+0

通過分隔條件逗號不爲什麼,因爲在某些情況下,名字也包含逗號...... – Aravind

+0

你應該看看數據庫規範化鏈接http://en.wikipedia.org/wiki/Database_normalization明智的事情 – Sibu

回答

2

explode將始終返回一個數組。因此,數組將永遠是真實的。 你的if語句改成這樣

if(sizeof($listval) > 1) 
+0

這工作得很好,很簡單,所以它已經實施。謝謝 –

+0

太棒了!如果這個解決方案適合你,你會考慮接受我的答案是正確的嗎?您可以點擊我的答案旁邊的複選框來執行此操作 – Kris

+0

非常抱歉。所有這一次我沒有意識到我錯過了複選標記。 –

0

嘗試這

<?php $listval = strpos(',',$vals)?explode(",",$vals):$vals; 
if(is_array($listval)) { ?> 

<select name="valuelist"> 
<?php 
    foreach($listval as $value) { 
    echo '<option>'.$value.'</option>'; 
} ?> 
</select> 

<?php }else{ ?> 

<input type="text" size="10" name="valuelist" value="<?php echo $vals; ?>" /> 
<?php } ?> 
0

請儘量使用follwing代碼:

<?php $listval = explode(",",$vals); 
if(count($listval) > 1) { ?> 
<select name="valuelist"> 
<?php 
    foreach($listval as $value) { 
    echo '<option>'.$value.'</option>'; 
} ?> 
</select> 

<?php } elseif(count($listval) == 1) { ?> 

<input type="text" size="10" name="valuelist" value="<?php echo $vals; ?>" /> 
<?php } ?> 
0

由於@Kris指出,你可以檢查一下,

 count($array) 

 sizeof($array) 


    <?php $listval = explode(",",$vals); 
     $array_count = count($listval); 
     if($array_count > 1) { ?> 

     <select name="valuelist"> 
     <?php 
     foreach($listval as $value) { 
      echo '<option>'.$value.'</option>'; 
     } ?> 
     </select> 

     <?php }else{ ?> 

      <input type="text" size="10" name="valuelist" value="<?php echo $vals; ?>" /> 
     <?php } ?> 
+0

計數函數也可以,謝謝 –