Как вставлять if statement внутри echo

Я получаю головную боль от этого. Мне нужно поставить if выражение внутри эха (это эхо в функции, это для представления формы на самом деле)

Вот пример частичного кода. В этой ситуации, как я могу поставить тезис, если выражение внутри моего эха?

<?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, поэтому нужно использовать больше, чем первый <?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 

Это будет работать, хотя я уверен, что он может быть упорядочен:

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

Используйте оператор inline if:

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

Вы не должны избегать ключей массива в строке

 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); } 

Вы хотите использовать тернарный оператор, который действует как сокращенный оператор IF / Else:

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

Не уверен, что вы можете сделать это, как вы спрашиваете. Вам просто нужно использовать регулярный if / else if block и выводить результат отдельно.

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