-2

我像这样在 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>";

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

4

3 回答 3

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>";
于 2012-12-11T09:40:31.703 回答
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>";
于 2012-12-11T09:42:54.373 回答
1

echo这个地方不需要你的电话。您的语句仅连接字符串而不打印它们。

此外,不可能if在字符串连接中使用语句。但是 if 快捷方式,即所谓的三元运算符适用于这种情况。

正如在另一个答案中指出的那样,在所选部分之前还缺少一个空格。

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

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

于 2012-12-11T09:51:05.087 回答