如何将if else条件转换为嵌入在php字符串中的三元运算符?

时间:2015-02-13 19:26:31

标签: php string

我想将if else条件嵌入到php字符串中。

这是代码:

<?php
    $selected = get_result();   //return value can be TRUE or FALSE
    if($selected)
        echo "<tr align='center' class='selected_row'>";
    else
        echo "<tr align='center' class='red_bg'";
?>

3 个答案:

答案 0 :(得分:3)

转换为三元并不会为您节省太多。如果使用此代码,则多次将其转换为可以调用的函数。

function setSelectedClass($selected) { 
    if(true == $selected) {
        $row = "<tr align='center' class='selected_row'>";
    } else {
        echo "<tr align='center' class='red_bg'">;
    }
    return $row
}

现在你甚至不必将三元语句全部洒在上面,如果你想要,你可以在函数中使用三元条件:

function setSelectedClass($selected) { 
    $row = "<tr align='center' class='" . (true == $selected ? "selected_row" : "red_bg") . "'>";
    return $row;
}

一旦你有了这个功能,你就可以调用它:

setSelectedClass(true);

这将为您节省大量代码。无论何时重复代码,正如您发现的那样,请考虑创建一个函数。

答案 1 :(得分:2)

三元(或条件)运算符应该可以解决问题。像这样:

echo "<tr align='center' class='" . ($selected ? "selected_row" : "red_bg") . "'>";

这是个人偏好的问题,这是否比原始版本更具可读性。请记住,代码可读性和可支持性比代码文件使用的“字节数”更重要

如果在代码中发生了很多,那么通过使用某种模板系统将页面标记绑定到a,你可以使代码更加干净和富有表现力。模型或通过其他方式将页面呈现重构为更通用和可重用的模块。

答案 2 :(得分:0)

像大卫说的那样,三元运算符应该是最好的。

来自http://php.net/manual/en/language.operators.comparison.php

  

如果(expr1) ? (expr2) : (expr3)评估为 TRUE ,则expr2表达式评估为expr1;如果expr3评估为expr1评估结果为expr1 ?: expr3 > FALSE

     

从PHP 5.3开始,可以省略三元运算符的中间部分。如果expr1评估为 TRUE ,则表达式expr1会返回expr3,否则会返回<?php echo "<tr align='center' class='"; if($selected) echo 'selected_row'; else echo 'red_bg'; echo "'>"; ?>

如果您不喜欢这个,您仍然可以在三个回声中执行此操作(但这不会解决您的字节问题):

<?php
if($selected)
    $class = 'selected_row';
else
    $class = 'red_bg';

echo "<tr align='center' class='$class'>";
?>

或使用变量:

{{1}}

但是三元运营商对我来说是最干净的。