2013-05-16 41 views
0

我試圖將下面的if語句插入到類中,但得到意外的T_IF錯誤;插入if語句到html中的css類

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

這是不可能的,或者我做錯了嗎?

回答

0

if語句連接到字符串是不可能的。

你可以這樣做,而不是:

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

或本:

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

你也可以使用a ternary operator,但你如果條件是(相對)長,所以它的風險使你的代碼看起來更像是線路噪聲。

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 : '').'"'; 
+0

這個問題說他們正在收到意想不到的T_IF錯誤。這意味着問題中的代碼以字符串開頭。除了更改已經共享的內容外,您還需要對代碼進行其他修改。 – Quentin

+0

是的!你是對的 – Pouki

+0

另一種方法是使用terinary如果格式...'($ link_data ['id'] == $ link_data ['text']?$ active:「in-active」)' – Orangepill

0

你試圖在if語句Concat的。

我假設在該行前有一個回聲。您可以將其轉換爲sprintf(http://php.net/sprintf)或將if放在回波行之前,設置$ active的值,然後將其轉換爲變量。

就我個人而言,我認爲sprintf/printf是您更好的解決方案。

+0

有點代碼在這裏有很長的路要走。 –

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"; 
+0

+1很好解釋。 – NullPointer