我想从此
转换以下代码$diff = strtotime($row['start']) - strtotime($current);
if ($diff < 7200) {
echo 'Starts soon';
} else if ($diff <= 0) {
echo 'Started';
} else {
echo 'Starts';
}
到此?
<?= ($current > $row['start']) ? 'Started' : 'Starts'; ?>
如何以这种方式写出(如果可能的话)?
答案 0 :(得分:2)
它不是很易读,所以我不会用它,但是你去了:
echo ($diff < 7200) ? 'Starts soon': (($diff <= 0) ? 'Started': 'Starts');
答案 1 :(得分:0)
那不是很漂亮,但你可以这样做:
<?php
$diff = strtotime($row['start']) - strtotime($current);
echo ($diff < 7200 ? 'Start soon' : ($diff <= 0 ? 'Started' : 'Starts'));
?>
或者
<?= ((strtotime($row['start']) - strtotime($current)) < 7200 ? 'Start soon' : ((strtotime($row['start']) - strtotime($current)) <= 0 ? 'Started' : 'Starts')); ?>
答案 2 :(得分:0)
否则,如果可以在其他部分中应用,则添加新的if。
<?= (($diff < 7200) ? "Starts soon" : (($diff <= 0) ? "Started" : "Starts")); ?>
答案 3 :(得分:0)
涵盖几行的if elseif
声明没有任何问题。如果您稍后检查代码,或者更重要的是如果其他人正在阅读您的代码,那么它便于阅读,易于理解并且易于查看正在发生的事情。
请记住,编写代码总是比阅读代码更容易。
来自documents:
<?php
// on first glance, the following appears to output 'true'
echo (true?'true':false?'t':'f');
// however, the actual output of the above is 't'
// this is because ternary expressions are evaluated from left to right
// the following is a more obvious version of the same code as above
echo ((true ? 'true' : false) ? 't' : 'f');
// here, you can see that the first expression is evaluated to 'true', which
// in turn evaluates to (bool)true, thus returning the true branch of the
// second ternary expression.
?>
这真的不太可取,因为它难以阅读且容易被误读。