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

必要に応じて、最後の行に続く中括弧を使用して、配列アクセスを文字列にインライン化することもできます: (詳細はこちら)

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

将来的には、スクリプトでエラー出力を有効にすることができます。これは主なエラーを示しています。

于 2012-12-11T09:51:05.087 に答える