如果数据库查询中的布尔表字段为true,则我尝试打印出yes,如果为false则为no。
我这样做:
echo "<td>"{$row['paid'] ? 'Yes' : 'No'";}</td>";
为什么这不正确?
答案 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>";