我想将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'";
?>
答案 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}}
但是三元运营商对我来说是最干净的。