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 } ?>
4

4 回答 4

2

explode 将始终返回一个数组。因此 is_array 将始终为真。将您的 if 语句更改为此

if(sizeof($listval) > 1)
于 2012-09-08T05:57:37.080 回答
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 } ?>
于 2012-09-08T05:58:08.173 回答
0

请尝试使用以下代码:

<?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 } ?>
于 2012-09-08T05:59:39.067 回答
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 } ?>
于 2012-09-08T07:24:43.173 回答