如果条件在HTML代码中使用PHP

时间:2012-12-11 09:38:33

标签: php html mysql

我在PHP中使用HTML。

for($i=0;$i<count($arrSql);$i++)
     $opt.="<option". if($_GET['pId'] == $arrSql[$i][0]){ echo "Selected";} ."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";

我已经测试了很长时间,它看起来是正确的,但它显示错误,我不知道错误在哪里。

3 个答案:

答案 0 :(得分:3)

您不能同时使用连接和if。将其更改为:

for ($i=0;$i<count($arrSql);$i++) {
     $opt .= "<option"
        . ($_GET['pId'] == $arrSql[$i][0] ? " selected" : '')
        ."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";

答案 1 :(得分:1)

你忘记了空间。

请尝试以下操作:

for($i=0;$i<count($arrSql);$i++)
    $opt.="<option". ($_GET['pId'] == $arrSql[$i][0] ? ' selected="selected" ' : ' ') ."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";

答案 2 :(得分:1)

此地点不需要echo来电。您的语句只会连接字符串而不会打印它们。

另外,在字符串连接中不可能使用if语句。但是if if捷径,所谓的ternary运算符适用于这种情况。

正如另一个答案所指出,在选择部分之前还有一个空格缺失。

for($i=0;$i<count($arrSql);$i++) {
     $opt .= "<option " 
          .($_GET['pId'] == $arrSql[$i][0]) ? "Selected" : "" 
          ."value=" .$arrSql[$i][0]
          . ">" .$arrSql[$i][1]. "</option>";
}

使用if的另一种选择可能更清楚:

for($i=0;$i<count($arrSql);$i++){
     $opt .="<option ";
     if ($_GET['pId'] == $arrSql[$i][0]){
         $opt .= "Selected"; 
     }
     $opt .= "value=" .$arrSql[$i][0]. ">" .$arrSql[$i][1]. "</option>";
}

如果您愿意,您甚至可以使用通向最后一行的花括号将数组访问内联到字符串中:(更多here

$opt .= "value=${$arrSql[$i][0]}>${$arrSql[$i][1]}</option>";

将来您可能希望在脚本中启用错误输出。这将表明主要错误。