如果选项之一为0,如何在选择下拉列表中检查变量


how to check for a variable in select drop-down if one of the option is 0

我有一个下拉选项在我的php表单…

    <div class="field">
      <label>* Number of People</label>
      <select class="ui dropdown" name="male">
        <option value="">Gender Male</option>
        <option <?php if ($male == 0 ) echo 'selected' ; ?> value="0">0</option>
        <option <?php if ($male == 1 ) echo 'selected' ; ?> value="1">1</option>
        <option <?php if ($male == 2 ) echo 'selected' ; ?> value="2">2</option>
        <option <?php if ($male == 3 ) echo 'selected' ; ?> value="3">3</option>
        <option <?php if ($male == 4 ) echo 'selected' ; ?> value="4">4</option>
        <option <?php if ($male == 5 ) echo 'selected' ; ?> value="5">5</option>
        <option <?php if ($male == 6 ) echo 'selected' ; ?> value="6">6</option>
        <option <?php if ($male == 7 ) echo 'selected' ; ?> value="7">7</option>
        <option <?php if ($male == 8 ) echo 'selected' ; ?> value="8">8</option>
        <option <?php if ($male == 9 ) echo 'selected' ; ?> value="9">9</option>
        <option <?php if ($male == 10 ) echo 'selected' ; ?> value="10">10</option>
      </select>
      <?php if(isset($maleErr)) print ('<span class="error">* ' . $maleErr . '</span>'); ?>
    </div>

然而,由于第一个选项是0,原始的错误检查是这样的:

   if (empty($_POST["male"])) {
     $maleErr = "# of people (gender male) required";
   } else {
     $male = test_input($_POST["male"]);
   }

一直弹出没有设置的错误。我意识到,由于php的empty函数的0等于空,所以我将其更改为:

   if (is_null($_POST["male"])) {
     $maleErr = "# of people (gender male) required";
   } else {
     $male = test_input($_POST["male"]);
   }

是正确的方式来检查表单的字段不为空吗?

请告诉我。谢谢你。

附录

你是说像这样吗?
  <option <?php if ($male === 0 ) echo 'selected' ; ?> value="0">0</option>

它永远不会为null,所以不能使用is_null()。它总是被设置为不能使用isset()。如你所见,0是空的。因此,要检查一个选项是否已被选中,请检查它是否为空字符串:

if ($_POST["male"] === "") {
    $maleErr = "# of people (gender male) required";
} else {
    $male = test_input($_POST["male"]);
}

使用严格比较:

if ($male === 0)

===比较值和类型,因此当0 == ''为真时,0 === ''为假。