我在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>";
我已经测试了很长时间,它看起来是正确的,但它显示错误,我不知道错误在哪里。
答案 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>";
将来您可能希望在脚本中启用错误输出。这将表明主要错误。