0

我想从这里转换以下代码

$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

4 回答 4

2

它不是很易读,所以我不会使用它,但你去:

echo ($diff < 7200) ? 'Starts soon': (($diff <= 0) ? 'Started': 'Starts');
于 2012-07-26T12:11:40.210 回答
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')); ?>
于 2012-07-26T12:11:24.653 回答
0

else if 可以在 else 部分应用你添加新的 if。

<?= (($diff < 7200) ? "Starts soon" : (($diff <= 0) ? "Started" : "Starts")); ?>
于 2012-07-26T12:11:36.080 回答
0

if elseif涵盖几行的陈述没有错。如果您稍后检查您的代码,或者更重要的是,如果其他人正在阅读您的代码,它会使其易于阅读、易于理解并且易于查看正在发生的事情。

请记住,编写代码总是比阅读更容易。

文件

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

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

于 2012-07-26T12:13:30.043 回答