10

我在 PHP 手册中看到了一个示例:

<?php
$var = TRUE;
echo $var==TRUE ? 'TRUE' : 'FALSE'; // get TRUE
echo $var==FALSE ? 'TRUE' : 'FALSE'; // get FALSE
?>

我正在尝试将类似的东西集成为单行输出的一部分。我的线如下所示:

echo "...text..." . $db_field['late']==0 ? ' ' : $db_field['late']  . "...more text...";

从逻辑上讲,我想做的是:如果'late' = 0,则不显示任何其他内容,显示'late'的内容。

我只是想太聪明了吗?

4

2 回答 2

30

因为三元运算符的优先级?:很低。要解决此问题,请使用括号

echo "...text..." . ($db_field['late']==0 ? ' ' : $db_field['late']) . "...more text...";

PHP 运算符优先级

于 2013-06-10T02:12:30.260 回答
3
echo "...text..." . ( $db_field['late']==0 ? ' ' : $db_field['late'] )  . "...more text...";
于 2013-06-10T02:12:43.057 回答