正在尝试创建数组条件


Trying to create an array condition

我有一个文本字段,用户可以输入逗号分隔的列表,然后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 } ?>

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

if(sizeof($listval) > 1)

尝试此

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

请尝试使用以下代码:

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

如@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 } ?>