在echo内部使用if语句显示解析错误

时间:2013-12-27 07:44:44

标签: php

我有这段代码,如果我从中删除if语句,它就可以了:

<?php 

for ($i = 1; $i < 32; $i++) {
    echo "<option name = \"day\"" . if($day == $i){ 
    echo " selected ";
} else {
    echo "\" \"";) . "value=\"" . $i . "\">" . $i . "</option>";
}

?>

由于代码中间有;部分,我确定出现了问题,但我不知道如何修复它。

4 个答案:

答案 0 :(得分:1)

您不能将IF语句用作字符串连接。您可以使用三元运算符。

试试这个。

<?php 
        for ($i = 1; $i < 32; $i++){
            echo "<option name = \"day\"" . ($day == $i?"selected": ""). "value=\"" . $i . "\">" . $i . "</option>";
        }
    ?>

答案 1 :(得分:0)

您不能在字符串连接中使用if语句。而是使用三元if ?:运算符。例如,您的代码变为:

<?php 
  for ($i = 1; $i < 32; $i++)
  {
    echo "<option name = \"day\"" 
       . ($day == $i ? " selected " : "\"\"")
       . "value=\"" . $i . "\">" . $i . "</option>";
  }
?>

答案 2 :(得分:0)

尝试使用它:

 <?php 
        for ($i = 1; $i < 32; $i++){
            echo "<option name = \"day\"" . $day == $i ? echo " selected ": echo "\" \"";) . "value=\"" . $i . "\">" . $i . "</option>";
        }
    ?>

答案 3 :(得分:0)

使用sprintf让您的代码更加干净。

for ($i = 1; $i < 32; $i++){
    echo sprintf('<option name="day" value="%s"%s>%s</option>', $i, $day == $i ? ' selected' : '', $i);   
}