2012-02-17 59 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> 

这将是真正的红色,错误的青色。