我已经获得了一组代码,我试图在php
代码中移动以利用' php'逻辑特征。我已经完成了其中的大部分工作但是我在选项列表中苦苦挣扎。我已经浏览了论坛,但似乎无法找到与此相近的内容。
以下是我的原始选项列表:
<div class="plan">
<label for="g2c3m">Month</label>
<select id="g2c3m" name="g2c3m">
<option value=""></option>
<option <?php echo ($row["g2c3m"] === "1")?"selected" : ""; ?> >1</option>
<option <?php echo ($row["g2c3m"] === "2")?"selected" : ""; ?> >2</option>
<option <?php echo ($row["g2c3m"] === "3")?"selected" : ""; ?> >3</option>
<option <?php echo ($row["g2c3m"] === "4")?"selected" : ""; ?> >4</option>
<option <?php echo ($row["g2c3m"] === "5")?"selected" : ""; ?> >5</option>
<option <?php echo ($row["g2c3m"] === "6")?"selected" : ""; ?> >6</option>
<option <?php echo ($row["g2c3m"] === "7")?"selected" : ""; ?> >7</option>
<option <?php echo ($row["g2c3m"] === "8")?"selected" : ""; ?> >8</option>
<option <?php echo ($row["g2c3m"] === "9")?"selected" : ""; ?> >9</option>
<option <?php echo ($row["g2c3m"] === "10")?"selected" : ""; ?> >10</option>
<option <?php echo ($row["g2c3m"] === "11")?"selected" : ""; ?> >11</option>
<option <?php echo ($row["g2c3m"] === "12")?"selected" : ""; ?> >12</option>
</select>
</div>
我尝试将这个基于html
的代码转换为基于php
的代码。以下是我提出的建议:
echo "<div class=\"plan\">";
echo "<label for=\"g2c3m\">Month</label>";
echo "<select id=\"g2c3m\" name=\"g2c3m\">";
echo "<option value=\"\"></option>";
echo "<option ".$row['g2c3m']." === \"1\")?\"selected\" : \"\"; >1</option>";
echo "<option ".$row['g2c3m']." === \"2\")?\"selected\" : \"\"; >2</option>";
echo "<option ".$row['g2c3m']." === \"3\")?\"selected\" : \"\"; >3</option>";
echo "<option ".$row['g2c3m']." === \"4\")?\"selected\" : \"\"; >4</option>";
echo "<option ".$row['g2c3m']." === \"5\")?\"selected\" : \"\"; >5</option>";
echo "<option ".$row['g2c3m']." === \"6\")?\"selected\" : \"\"; >6</option>";
echo "<option ".$row['g2c3m']." === \"7\")?\"selected\" : \"\"; >7</option>";
echo "<option ".$row['g2c3m']." === \"8\")?\"selected\" : \"\"; >8</option>";
echo "<option ".$row['g2c3m']." === \"9\")?\"selected\" : \"\"; >9</option>";
echo "<option ".$row['g2c3m']." === \"10\")?\"selected\" : \"\"; >10</option>";
echo "<option ".$row['g2c3m']." === \"11\")?\"selected\" : \"\"; >11</option>";
echo "<option ".$row['g2c3m']." === \"12\")?\"selected\" : \"\"; >12</option>";
echo "</select>";
echo "</div>";
选项列表显示正确,但是当我将信息提交给服务器时,它不能正常回显。
我相信我遵循了有关引号的正确\
规则,但它无效。
我错过了什么?我会永远感激任何帮助。
答案 0 :(得分:2)
这不是您问题的答案,但无论如何都会对您有所帮助。
在编写模板代码时,很多时候打开和关闭PHP代码是完全可以接受的。 PHP可以根据需要关闭和打开(只要它不在表达式的中间)。所以你可以运行一个if语句,关闭php,打印出HTML,然后像这样重新打开PHP:
<?php if (condition): ?>
<p>Hello World</p>
<?php else: ?>
<p>Goodbye World</p>
<?php endif; ?>
或for循环:
<?php foreach($results as $row): ?>
<tr>
<td><?php echo $row['name'] ?></td>
</tr>
<?php endforeach; ?>
这使用了alternative syntax(if / endif,foreach / endforeach),它非常适合模板化。
答案 1 :(得分:1)
让我们比较两种风格中的一行:
<option <?php echo ($row["g2c3m"] === "1")?"selected" : ""; ?> >1</option>
echo "<option ".$row['g2c3m']." === \"1\")?\"selected\" : \"\"; >1</option>";
第一个有一个三元运算符(如果$row["g2c3m"] === "1"
则输出选择其他任何东西。
在第二个版本中,您没有该运算符。而是输出php代码。
正确
echo "<option ". (($row['g2c3m'] === "1")? "selected" : "" ) . " >1</option>";
这样仍然可以评估三元运算符,而不是简单地输出为字符串。
注意:我并非100%确定三元运算符可以像在线一样使用。您可能需要多行。 bei concatenation,使用变量或多个回声。