当数组中的数字等于零时显示其他内容

时间:2018-01-28 04:21:01

标签: php mysql


我设法显示MySQL数据库中的数据,但我遇到了一个问题。
我想要实现的是当价格的值等于 0 时,它应显示免费而不是0。 我试图在网上找到一个解决方案,但也许我错了,因为我对PHP很新。

<?php
while ($row = mysqli_fetch_array($query))
{
    $amount  = $row['amount'] == 0 ? '' : number_format($row['amount']);
    echo '
        echo '<tr>
                <td>'.$row['id'].'</td>
                <td>'.$row['event'].'</td>
                <td>'.$row['price'].'</td>
                <td>'.$row['address'].'</td>
                <td>'.$row['info'].'</td>
                <td>'.$row['contact'].'</td>
            </tr>';
}?>

3 个答案:

答案 0 :(得分:1)

你很亲密。看起来您正在测试三元组中的0,并为$amount

分配值或不分配值
$amount = ($row['amount'] == 0) ? '' : number_format($row['amount']);

您可以将其更改为(假设amount数据类型是数字而不是字符串):

$amount = ($row['amount']) ? '$'.number_format($row['amount']) : 'Free';

如果amount是数据库中的字符串,您可能需要像过去那样测试"0"

$amount = ($row['amount'] !== "0") ? '$'.number_format($row['amount']) : 'Free';

然后您有下一个问题 - 您从未在代码中使用$amount:]

完整更改(基于您的代码示例):

<?php
    while ($row = mysqli_fetch_array($query)) {
        // Assign either 'Free' or a formatted value to '$amount'
        $amount = ($row['amount']) ? '$'.number_format($row['amount']) : 'Free';
        // And be sure to use $amount here
        echo '<tr>
            <td>'.$row['id'].'</td>
            <td>'.$row['event'].'</td>
            <td>'.$amount.'</td>
            <td>'.$row['adress'].'</td>
            <td>'.$row['info'].'</td>
            <td>'.$row['contact'].'</td>
        </tr>';
    }
?>

注意:您在$row['adress']中也有拼写错误,除非错误在数据库表中,它应该是$row['address']

答案 1 :(得分:0)

为什么不试试这个? echo ($row['price'] == 0) ? 'free' : $row['price'];

答案 2 :(得分:0)

您在该代码中有一些破碎的格式,但您已经有了正确的想法。具体来说,这一行:

$amount = $row['amount'] == 0 ? '' : number_format($row['amount']);

将完全按照您的意愿行事。只需更改如下:

$amount = $row['amount'] == 0 ? 'Free' : number_format($row['amount']);

然后echo $amount;您想要金额显示单词&#34; Free&#34;如果金额为零。如果你愿意的话,你可以专门为此付出代价。

e.g。

echo '\t<td>', $row['price'] == 0 ? 'Free' : number_format($row['amount']), '</td>';