我想将下面的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'";
?>
三元(或条件)运算符应该完成此操作。类似这样的东西:
echo "<tr align='center' class='" . ($selected ? "selected_row" : "red_bg") . "'>";
这是个人偏好的问题,这是否比原始版本更可读。请记住,代码的可读性和可支持性比代码文件使用的"字节数"重要得多。
如果这种情况真的在代码中发生了很多,那么通过使用某种模板系统将页面标记绑定到模型,或者通过将页面呈现重构为更通用、更可重用的模块,您很有可能使代码更加干净、更具表达力。
转换为三进制不会为您节省太多。如果多次使用此代码,请将其转换为可以调用的函数。
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);
这将为您节省大量代码。每当你重复代码时,就像你发现的那样,考虑创建一个函数。
正如David所说,三元运算符应该是最好的。
发件人http://php.net/manual/en/language.operators.comparison.php:
如果
expr1
的计算结果为TRUE,表达式(expr1) ? (expr2) : (expr3)
的计算结果将为expr2
,如果expr1
的计算结果是FALSE从PHP 5.3开始,可以省略三元运算符的中间部分。如果
expr1
的计算结果为TRUE,则表达式expr1 ?: expr3
返回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'>";
?>
但是三元运算符对我来说是最干净的