【发布时间】:2010-07-06 10:36:50
【问题描述】:
如果来自数据库查询的布尔表字段为真,我试图打印出 yes,如果它为假,则打印 no。
我正在这样做:
echo "<td>"{$row['paid'] ? 'Yes' : 'No'";}</td>";
为什么不正确?
【问题讨论】:
如果来自数据库查询的布尔表字段为真,我试图打印出 yes,如果它为假,则打印 no。
我正在这样做:
echo "<td>"{$row['paid'] ? 'Yes' : 'No'";}</td>";
为什么不正确?
【问题讨论】:
echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>";
就个人而言,我从不回显 HTML,所以我会这样做:
<td><?=(($row['paid']) ? 'Yes' : 'No')?></td>
不过只是个人喜好而已..
【讨论】:
echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>";
【讨论】:
其他人已经纠正了你的错误,但我想你可能想知道原因。
您对三元的使用实际上并不是问题,而是您将它与其他东西连接起来的方式。
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'));
世界现在是你的牡蛎。
【讨论】:
参考this
echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>";
【讨论】:
因为 echo 需要很多参数,所以应该使用逗号而不是字符串连接,这需要更多的处理和内存:
echo "<td>", (($row['paid']) ? 'Yes' : 'No'), "</td>";
【讨论】: