次の if ステートメントをクラスに挿入しようとしていますが、予期しない T_IF エラーが発生します。
class="color_icon_filter '. if ($link_data['id']==$link_data['text']) {$active} .' "
これは不可能ですか、それとも間違っていますか?
次の if ステートメントをクラスに挿入しようとしていますが、予期しない T_IF エラーが発生します。
class="color_icon_filter '. if ($link_data['id']==$link_data['text']) {$active} .' "
これは不可能ですか、それとも間違っていますか?
サーバー側で解釈されるように 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 : '').'"';
代入操作の途中で 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";
if ステートメントで連結しようとしています。
その行の前にエコーがあると思います。それを sprintf ( http://php.net/sprintf )に変換するか、echo 行の前に if を置き、$active の値を設定してから、変数だけで連結することができます。
個人的には、sprintf/printf の方が優れたソリューションだと思います。
if
ステートメントを文字列に連結することはできません。
代わりにこれを行うことができます:
$string = "123";
if ($bar) {
$string .= "456";
}
$string .= "789";
またはこれ:
if ($bar) {
$baz = "456";
} else {
$baz = "";
}
$string = "123" . $baz . "789";
三項演算子を使用することもできますが、 if 条件が (比較的) 長いため、コードがライン ノイズのように見えるリスクがあります。