在 PHP isset 中,零总是返回为 null


zero always returns to null in php isset

我是PHP中的新手。我正在尝试使用下拉列表从数据库过滤数据。我在视图窗体中的代码是这样的

   <?php 
    if(isset($value))
    {
       if($value==1)
      {
      echo"<option value='1' selected>option1</option>
           <option value='0' >option2</option>";    
      } 
      if($value==0)
      {
      echo"<option value='1' >option1</option>
           <option value='0' selected >option2</option>";   
      }    
    }           
    else    
    {
      echo"<option value='1'>option1</option>
           <option value='0'>option2</option>"; 
           $value="";
    }              
  ?>

但是,如果我选择选项1,它可以正常工作。但是当我单击选项2时,它会过滤正确的数据,但仅选择状态。选择的值是状态,即与空值相同...

只需尝试用这个替换你的代码

<select name="status" id="status">
<option value=""><< Select Option >></option>
<option value="1" <?=($status=="1")?"selected":""?>>Active</option>
<option value="0" <?=($status=="0")?"selected":""?>>Inactive</option>           
</select>

它的小型三元运算符在其他条件下速度很快。

在解决可能需要更多解释的过滤问题之前我建议重构您的代码以避免不必要的条件和代码重复

这是一种方法:

<?php $values   = array('Inactive', 'Active') ?>
<?php $selected = (!empty($status)) ? 'selected' : ''  ?>
<?php foreach($values as $value => $label): ?>
    <option value='<?php echo $value ?>' <?php echo $selected ?> ><?php echo $label ?></option>
<?php endforeach ?>