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

爆発は常に配列を返します。したがって、 is_array は常に true になります。if ステートメントをこれに変更します

if(sizeof($listval) > 1)
于 2012-09-08T05:57:37.080 に答える
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 に答える
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 に答える