【问题标题】:How to embed if statement inside echo如何在回声中嵌入if语句
【发布时间】:2014-02-06 04:25:48
【问题描述】:

我对此感到头疼。我需要将 if 语句放在 echo 中(此 echo 在函数中,实际上是用于表单提交)

这是我的部分代码的示例。在这种情况下,我怎样才能将这些 if 语句放在我的 echo 中??

   <?php echo '<td><select id="depuis" name="depuis">
    <option value=\'4\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'4\'){ echo \'selected\'; } else { echo ''; } ?> ></option>
    <option value=\'1\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'1\'){ echo \'selected\'; } else { echo ''; } ?> >2 ans et moins</option>
    <option value=\'2\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'2\'){ echo \'selected\'; } else { echo ''; } ?> >2 &agrave; 5 ans</option>
    <option value=\'3\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'3\'){ echo \'selected\'; } else { echo ''; } ?> >5 ans et plus</option>
</select>
</td>'
; ?>

【问题讨论】:

    标签: php html forms echo


    【解决方案1】:

    您需要使用三元运算符,它充当缩短的 IF/Else 语句:

    echo '&lt;option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'&gt;'.$value.'&lt;/option&gt;';

    【讨论】:

      【解决方案2】:

      你不应该转义字符串中的数组键

      if(isset($_POST[\'depuis\']) ...
      

      应该是

      if(isset($_POST['depuis']) && ...
      

      您还可以使用数组和循环清理选项的生成

      $options = array(
        'label1' => 1,
        'label2' => 2,
        'label3' => 3,
        'label4' => 4
      );
      $value = (isset($_POST['depuis'])) ? $_POST['depuis'] : 0;
      
      foreach ($options as $label => $optionValue) {
        $selected = ($optionValue == $value) ? ' selected' : '';
      
        printf('<option value="%s"%s>%s</option>', $optionValue, $selected, $label); 
      }
      

      【讨论】:

      • 如果顺序很重要,你可以说foreach (['4', '1', '2', '3'] as $x)
      • (顺便说一句,你所有的选项都有value="4"。)
      【解决方案3】:

      使用内联 if 语句:

      echo 'Based on your score, you are a ',($score > 10 ? 'genius' : 'nobody');
      

      【讨论】:

      • @machineaddict - echo 可以采用逗号分隔的参数列表以及字符串。
      • @andrewsi:感谢您提供的信息。我刚刚测试过它并且它有效。对不起艾丹。
      • @machineaddict:不用担心
      • 完美,我喜欢它
      【解决方案4】:

      这可行 - 尽管我确信它可以简化:

      <?php
      
      $out = '
          <td>
              <select id="depuis" name="depuis">
              <option value="4"
          ';
      
          if(isset($_POST['depuis']) && $_POST['depuis'] == '4'){ 
              $out .= 'selected';
          } 
      
          $out .= '
              ></option>
              <option value='1' 
          ';
      
          if(isset($_POST['depuis']) && $_POST['depuis'] == '1'){ 
              $out .= 'selected';
          }
      
          $out .= '
              >2 ans et moins</option>
              <option value=\'2\' 
          ';
      
      
          if(isset($_POST['depuis']) && $_POST['depuis'] == '2'){ 
              $out .= 'selected';
          }
      
          $out .= '
              >2 &agrave; 5 ans</option>
              <option value='3' 
          ';
      
          if(isset($_POST['depuis']) && $_POST['depuis'] == '3'){ 
              $out .= 'selected';
          }
      
          $out .= '
                  >5 ans et plus</option>
              </select>
          </td>
          ';
      
          echo $out;
      ?>
      

      Meilleurs voeux...

      【讨论】:

      • 谢谢美人,澳洲人! :)
      【解决方案5】:

      不确定您是否可以按照您的要求进行操作。您只需要使用常规的 if/else if 块并分别输出结果。

      <?php 
      echo("<td><select id=\"depuis\" name=\"depuis\">");
      echo("<option value='4'");
      if(isset($_POST['depuis']) && $_POST['depuis'] == '4'){ echo("selected"); } 
      echo("></option>");
      
      [ ...etc... ]
      ?>
      

      【讨论】:

        【解决方案6】:

        一切都是 php,所以需要使用比第一个 &lt;?php 更多的东西,在检查 if 之前完成每个 echo。像这样:

        <?php 
          echo '<td><select id="depuis" name="depuis">
            <option value="4"'; 
            if(isset($_POST['depuis']) && $_POST['depuis'] == '4') { 
              echo ' selected'; 
            } 
         echo ' >Something here maybe?</option>...etc
        

        【讨论】:

        • 太棒了!这很简单,不需要新变量,+1!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-20
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 2022-11-26
        • 2020-01-04
        • 2018-01-01
        相关资源
        最近更新 更多