在PHP中使用三元运算符

时间:2010-07-06 10:36:50

标签: php sql

如果数据库查询中的布尔表字段为true,则我尝试打印出yes,如果为false则为no。

我这样做:

echo "<td>"{$row['paid'] ? 'Yes' : 'No'";}</td>";

为什么这不正确?

5 个答案:

答案 0 :(得分:7)

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

就个人而言,我从不回应HTML,所以我会这样做:

<td><?=(($row['paid']) ? 'Yes' : 'No')?></td>

虽然只是一个偏好的东西..

答案 1 :(得分:4)

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

答案 2 :(得分:3)

其他人纠正了你的错误,但我想你可能想知道为什么。

你使用三元组实际上并不是问题所在,它是你加入其他东西的方式。

Echo是一个接受一个变量的函数;一个字符串。实际上就是这样(虽然人们倾向于将括号放下):

echo(SomeString);

在你的情况下,SomeString需要“”后跟你的三元组的结果,然后是“”。这是三个字符串,需要粘在一起成为一个字符串,以便你可以“回显”它们。

这称为连接。在PHP中,这是使用点来完成的:

"<td>" . (($row['paid']) ? 'Yes' : 'No') . "</td>"

可以像这样放在echo()里面:

echo("<td>" . (($row['paid']) ? 'Yes' : 'No') . "</td>");

或者,您可以使用一个将多个字符串作为参数的函数来跳过串联。 Sprintf()可以为您完成此操作。它需要一个“格式”字符串(基本上是一个模板)和许多变量字符串(或数字,无论如何)。使用%s符号指定插入字符串所需的位置。

sprintf("<td>%s</td>",(($row['paid']) ? 'Yes' : 'No'));

世界现在是你的牡蛎。

答案 3 :(得分:1)

参考this

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

答案 4 :(得分:1)

由于echo需要很多参数,所以应该使用逗号代替字符串连接,这需要更多的处理和内存:

echo "<td>", (($row['paid']) ? 'Yes' : 'No'), "</td>";