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语句连接到字符串上。

你可以这样做:

$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 回答
0

您正在尝试在 if 语句中进行连接。

我假设那条线前面有一个回声。您可以将其转换为 sprintf ( http://php.net/sprintf ) 或将 if 放在 echo 行之前,设置 $active 的值,然后仅在变量中 concat。

就个人而言,我认为 sprintf/printf 是您更好的解决方案。

于 2013-05-16T16:31:03.330 回答
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 回答