【发布时间】:2009-12-26 13:08:35
【问题描述】:
我想让用户输入优惠券号码以获得折扣。输入并提交优惠券号码后,页面会重新加载,并显示他们输入了正确的金额。
如果优惠券金额不 0.00 英镑,我尝试这样做的方法是显示勾号。但是字符串比较似乎不起作用,因为它总是认为它不是 0.00 英镑。代码如下。函数 coupon_amount() 返回票面金额。 coupon_amount() 返回“£0.00”(包括英镑符号)
<?php $coup_amount = coupon_amount(); ?>
<?php $zero_amount = "£0.00"; ?>
<?php if(strcmp($coup_amount, $zero_amount)== 0) { ?>
<?php echo 'Enter coupon code if applicable:' ?>
<input type='text' class='couponinput' name='coupon_num' id='coupon_num' value='coupons_name' />
<input type='submit' class='update-button' value='submitcoupon' />
<?php } else { ?>
<?php echo 'Thanks.' ?><input type='text' disabled='disabled' class='couponinput' name='coupon_num' id='coupon_num' value='coupons_name' />
<div class='tick'></div>
<?php } ?>
我在比较方面做错了吗?
我按照 Oscar 的建议在下面,这是输出。似乎是编码问题。并且对于 zero_amount,英镑符号没有正确显示。
coup_amount: (£0.00) zero_amount: (�0.00)
coup_len:10 zero_len:5
strcmp: -1
coup_ascii: 38 zero_ascii:163
【问题讨论】:
-
您对优惠券金额使用字符串值(带有 £ 符号)而不是数字变量是否有特定原因?
-
注意不要使用浮点数。大脑中的 0.33 英镑与计算机中的不一样。我建议用便士建模并使用整数。
-
@samir 为什么不一样?
-
coupon_amount() 返回“£0.00”(包括英镑符号)
-
好吧..我以为我能闻到编码问题:)(更新了我的帖子..)