0

次の if ステートメントをクラスに挿入しようとしていますが、予期しない T_IF エラーが発生します。

class="color_icon_filter '. if ($link_data['id']==$link_data['text']) {$active} .' "

これは不可能ですか、それとも間違っていますか?

4

4 に答える 4

2

サーバー側で解釈されるように PHP タグを開く必要があります。

class="color_icon_filter <?php if ($link_data['id']==$link_data['text']) {echo $active} ?>"

編集

または、すでに PHP タグを使用している場合

echo 'class="color_icon_filter '.($link_data['id']==$link_data['text'] ? $active : '').'"';
于 2013-05-16T16:30:55.877 に答える
0

代入操作の途中で if ステートメントを使用することはできませんが、目的の結果を得る方法はいくつかあります。

$active = '';
if ( $link_data['id']==$link_data['text'] ) {
    $active = 'active';
}
$class = "color_icon_filter $active";

または三項演算子を介したより短い方法:

$active = ( $link_data['id']==$link_data['text'] ) ? 'active' : '';
$class = "color_icon_filter $active";
于 2013-05-16T16:32:53.533 に答える
0

if ステートメントで連結しようとしています。

その行の前にエコーがあると思います。それを sprintf ( http://php.net/sprintf )に変換するか、echo 行の前に if を置き、$active の値を設定してから、変数だけで連結することができます。

個人的には、sprintf/printf の方が優れたソリューションだと思います。

于 2013-05-16T16:31:03.330 に答える
0

ifステートメントを文字列に連結することはできません。

代わりにこれを行うことができます:

$string = "123";
if ($bar) {
   $string .= "456";
}
$string .= "789";

またはこれ:

if ($bar) {
    $baz = "456";
} else {
    $baz = "";
}
$string = "123" . $baz . "789";

三項演算子を使用することもできますが、 if 条件が (比較的) 長いため、コードがライン ノイズのように見えるリスクがあります。

于 2013-05-16T16:30:43.180 に答える