引号和ifelse语句的PHP代码 - 正确的语法?

时间:2011-07-15 12:57:27

标签: php mysql if-statement echo

这是一个PHP页面,它使用JOIN显示查询的结果 (基于教程中的一个并适用于我的数据库):

    <?php
$connection = mysql_connect("localhost", "root", "PASSWORD") or die("Error connecting to database");
mysql_select_db("products", $connection);
$result = mysql_query("SELECT * FROM buyers LEFT JOIN products USING (id);", $connection) or die("error querying database");
$i = 0;
while($result_ar = mysql_fetch_assoc($result)){
?>
<table>
<tr <?php if($i%2 == 1){ echo "class='body2'"; }else{echo "class='body1'";}?>>
<td>
<?php echo $result_ar['buyer_name']; ?></td>
<td>
<?php echo $result_ar['manufacturer']; ?>
</td>
<td>
<?php $result_ar['product_name'] = ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"'; echo $result_ar['product_name']; ?>
</td>
</tr>
</table>
<?php
$i+=1;
}
?>

但是,这不是问题的连接,而是这个PHP编码:

<?php $result_ar['product_name'] = ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"'; echo $result_ar['product_name']; ?>

我试过这个并显示以下内容(此问题开头的完整代码结果):

John Zanussi "1500 Washing Machine"
James Hotpoint "3000 Washing Machine"
Simon Hotpoint

我很惊讶它有效,它只是一个测试声明,看看代码是否有效。

http://www.w3schools.com/php/php_if_else.asp是我的工具。

如果我是正确的,这意味着它会将 product_name 列中的任何数组放在引号中,但如果该列为空,则显示引号

只是检查我是否正确 - 试图在这里提高我的PHP技能!

1 个答案:

答案 0 :(得分:0)

你是对的。代码中的三元操作等同于:

// If the product_name isn't empty, surround it in quotes.
if (!empty($result_ar['product_name']))
{
  $result_ar['product_name'] = "\"{$result_ar['product_name']}\"";
}

这里使用三元运算有点令人困惑,因为第一种情况(空值)仍然会导致空值。更常见的是你会看到相反的 - 三元运算用于为空变量创建默认值。

在回显变量的上下文中,您可以将其缩短为此表达式。在回显变量之前无需重新分配变量。您可以回显三元操作的结果。

// Based on your version...
echo ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"';

// Clearer version with the empty case last rather than first...
echo !empty($result_ar['product_name']) ? "\"{$result_ar['product_name']}\"" : "";

要使用三元操作来分配类(例如,可以使用粗体文本),您可以在表格单元格中使用类似的内容:

<td class='<?php echo $result_ar['product_name'] == "Zanussi" ? "special_bold_class" : "regular_class";?>'>

结果是:

<td class='special_bold_class'>