2012-02-17 63 views
0
<tr <?php if($isOverDeadline) 
    { 
     echo ' style="background-color:#CC3300"'; 
    } 
    ?>><td width="250" <?php 
     if($isOverDeadline) 
     { 
    echo ' style="color:#fff"'; 
     } 
     ?>><?php echo $something; ?> </td></tr> 

我發現tr和td中的嵌套php塊不起作用。有人能告訴我什麼是錯的嗎?在表格行和表格數據中回顯樣式

+0

什麼不行?輸出HTML是什麼樣的?您在樣式規則中缺少分號,但不應該破壞標記。 – 2012-02-17 03:28:35

+0

所以根本沒有輸出,或者php沒有解釋,或者你知道它到底有什麼用處? – s1lence 2012-02-17 03:29:41

+0

作爲一個建議,通常最好分配一個CSS類,而不是放入內聯樣式屬性。 'if($ isOverDeadline){echo'class =「over」'; }' – 2012-02-17 03:29:53

回答

0

你應該避免像這樣的雙引號 echo'style = \「background-color:#CC3300 \」';

+0

爲什麼要逃避雙引號? – 2012-02-17 03:34:05

+0

兩者根本不起作用 – 2012-02-17 03:45:16

+0

爲什麼不在不逃避它們的情況下插入它們?外部引號是單引號... – 2012-02-17 03:45:36

1

* 檢查isOverDeadline是真還是假*

<?php $isOverDeadline = true; ?> 
<tr <?php if($isOverDeadline) 
    { 
     echo ' style="background-color:#CC3300"'; 
    } 
    ?>><td width="250" <?php 
     if($isOverDeadline) 
     { 
    echo ' style="color:#fff"'; 
     } 
     ?>><?php echo $something; ?> </td></tr> 
+0

我同意這個答案,我猜「$ isOverDeadline」總是因爲某種原因返回false ,當你強制爲真時,用它來檢查它是否工作,然後找出爲什麼它在預期時不會返回true。 – 2012-02-17 04:11:26

+0

當你在條件中使用變量時,你需要知道返回值,在上面的例子中只有我們可以有布爾值。所以說,當它返回false時,把其他的條件顯示一些其他的顏色..在這裏我給了一個真實的力量,它也可以是假的,因爲你需要把其他條件 – 2012-02-17 04:31:26

1

什麼,我通常是在過去所做的,爲了避免這種可能出現的問題是:

<?php 

    // This is merely a convenience method for short circuiting, 
    // you could use print() as it always returns 1, however e() 
    // is just shorter. 
    function e($arg) 
    { 
     echo $arg; 
     return true; 
    } 

    $isOverDeadline = true; 
    $something = "Hello world"; 

?> 

<tr style="<?php $isOverDeadline and e('background-color: #cc3300;'); ?>"> 
    <td style="<?php $isOverDeadline and e('background-color: #ffffff;'); ?>" 
     width="250"><?php e($something); ?></td> 
</tr> 

這使用short circuit evaluation到儘量減少內聯PHP。正如你所看到的,一些IDE或者語法高手會在它上面發揮作用,但我運行的是NetBeans,看起來不錯。

請記住,我的例子會導致空的樣式屬性時$isOverDeadline是假的,但你可以根據需要修改(生成代碼看起來而不必應付前面加上空格清潔等

你甚至可以複製else

<tr style="background-color: <?php ($isOverDeadline and e('#f00')) or e('#0ff'); ?>"></tr> 

這將是真正的紅色,錯誤的青色。