如何在echo内部嵌入if语句

时间:2014-01-17 00:36:57

标签: php html forms echo

我很头疼。我需要将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>'
; ?>

6 个答案:

答案 0 :(得分:5)

所有内容都是php,因此在使用<?php进行检查之前,需要使用超过第一个echo完成每个if的内容。像这样:

<?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 :(得分:3)

这样可行 - 虽然我确信它可以简化:

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

Meil​​leurs voeux ......

答案 2 :(得分:1)

您不应该转义字符串

中的数组键
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); 
}

答案 3 :(得分:1)

使用内联if语句:

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

答案 4 :(得分:1)

您将需要使用一个三元运算符作为缩短的IF / Else语句:

echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>';

答案 5 :(得分:0)

不确定你能不能像你问的那样做。你只需要使用常规的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... ]
?>