【问题标题】:Proper Use Of Ternary Operator三元运算符的正确使用
【发布时间】:2013-09-10 17:13:34
【问题描述】:

我正在尝试将“新”添加到收件箱中的未读邮件。我认为我不能在 echo 中使用 if 语句,并且我尝试过但未能理解三元运算符的正确使用。我将不胜感激任何帮助。非常感谢。

如果 read_yet = 'no' 我想将此代码添加为另一个 echo 语句:

echo '<td>NEW</td>' ;

这是我当前的收件箱代码。

$sql = mysqli_query($con, "select * from messages 
WHERE deleted = 'no' AND to_user = '" . $_GET['username'] . "'
ORDER BY id DESC");

while ($row = mysqli_fetch_array($sql)){

echo '<tr>';
echo '<td><a href="profile.php?username=' ;
echo $row['from_user']  ;
echo '">';
echo '<img id="usersimage" src="images/profileimg/thumbnail_'.$row['from_user'];
echo '.jpg"</a></td>' ;
echo '<td><a href="users.php?username=' ;
echo $row['from_user']  ;
echo '">';
echo $row['from_user'];
echo "</a></td><td><a href='messageid.php?id=".$row['id']."'><font color='#b2ccdb'>" .$row['subject'] ;
echo '</a></font></td>';
echo '</tr>';

}

【问题讨论】:

  • 对我来说,我倾向于在赋值中使用三元运算符,例如:$myValueSet = isset($_POST['myValue']) ? 'YES' : 'NO'。第一部分是表达。如果为真,则返回第二部分,如果为假,则返回第三部分。

标签: php if-statement mysqli echo


【解决方案1】:

如果您要添加另一列,我不建议使用三元运算符,而只需使用if

if ($row['read_yet' == 'no') {
    echo '<td>NEW</td>';
}

但是,如果你总是输出这一列并且需要改变显示,你可以使用三元运算符。

echo '<td>' . ($row['read_yet' == 'no' ? 'NEW' : 'READ') . '</td>';

注意:三进制会产生线路噪声。因此,我更喜欢临时变量、辅助函数或传统的if

【讨论】:

  • 太棒了!拥有一个 New & Read 专栏是正确的选择。非常感谢!现在学习这个选项将对我将来有很大帮助。
【解决方案2】:

这样的三元组:

$foo = ($bar) ? 'true result' : 'false result';

在功能上等同于:

if ($bar) {
   $foo = 'true result';
} else { 
   $foo = 'false result';
}

【讨论】:

  • + 用于普通教育。
猜你喜欢
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 2013-08-19
  • 2017-06-04
  • 2020-03-14
相关资源
最近更新 更多