php字符串在应该';t


php string echoes as 0 when it shouldn't

我正在编写代码来显示某些产品的价格。如果价格为0,则不会显示任何内容。

<? if ($book->price_euro != 0) {$europrice = number_format($book->price_eur, 2); echo "€$europrice";}?>
<? if ($book->price_gbp != 0) {$gbpprice = number_format($book->price_gbp, 2); echo "£$gbpprice";}?>
<? if ($book->price_usd != 0) {$usdprice = number_format($book->price_usd, 2); echo "$$usdprice";}?>

这与"0.00欧元,33.00英镑,66.00美元"相呼应。欧元的价格定为99欧元。我看不出有任何理由将其回声为0!我做错什么了吗?语法错误?

$europrice = number_format($book->price_eur, 2

不应该是$book->price_euro吗?

欧洲中的打字

number_format($book->price_eur, 2); // This is what you have.
number_format($book->price_euro, 2); // This is what you need.

如果没有看到更多信息,我看不出这段代码有什么问题。但也许是你的变量?

<? if ($book->price_euro != 0) {$europrice = number_format($book->price_eur, 2); echo "€$europrice";}?>

price_eur应该是price_euro吗?

number_format($book->price_eur, 2);

应该是

number_format($book->price_euro, 2);

null值导致了您的问题。

您可能仍然会得到null值或其他东西,请尝试使用空值代替

<? if (empty($book->price_euro)) {$europrice = number_format($book->price_euro, 2); echo "€$europrice";}?>
<? if (empty($book->price_gbp)) {$gbpprice = number_format($book->price_gbp, 2); echo "£$gbpprice";}?>
<? if (empty($book->price_usd)) {$usdprice = number_format($book->price_usd, 2); echo "$$usdprice";}?>