如果是那么PHP的基本转换

时间:2012-07-26 12:08:00

标签: php

我想从此

转换以下代码
$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';  ?>

如何以这种方式写出(如果可能的话)?

4 个答案:

答案 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.
?>

这真的不太可取,因为它难以阅读且容易被误读。