0

我在电子商务网站上划分购物车总数时遇到了一些困难,以便为客户支付存款金额。

正如您将在下面看到的,我试图将订单总额的 25% 显示为存款金额。但是,我已经尝试了很多变体,并且都返回“0”。

如果我独立地回显任何变量,它们会回显正确的值,但是当一个除以另一个时,结果每次都是“0”。

任何帮助表示赞赏,我觉得我错过了一些非常简单的东西..

谢谢

<?php $amount = $woocommerce->cart->get_total(); ?>
                            <?php $percent = 4; ?>
                            <?php $deposit = $amount / $percent; ?>


                            <strong><?php echo $deposit; ?></strong>
4

4 回答 4

0

If the value of $amount is in the form " $1,022.29 " try this:

<?php $amount = $woocommerce->cart->get_total(); ?>
                            <?php $percent = 4; ?>
                            <?php $deposit = preg_replace('/^( \$)?([0-9.]+) ?$/', '$2', str_replace(',', '', $amount)) / $percent; ?>


                            <strong><?php echo $deposit; ?></strong>
于 2013-08-31T21:47:45.743 回答
0

尝试使用 casts -> (field_type)

<?php $amount = $woocommerce->cart->get_total(); ?>
                            <?php $percent = 4; ?>
                            <?php $deposit = (float)$amount / (int)$percent; ?>


                            <strong><?php echo $deposit; ?></strong>

使用 cast,您可以从一种类型转换为另一种类型。

例如,如果使用$woocommerce->cart->get_total(); 你得到string,用(float)你转换成float

PHP.NET 关于强制转换

于 2013-08-31T18:39:34.767 回答
0

$commerce->cart->get_total();函数响应输出,例如<span class="amount">560&nbsp;&euro;</span>($1,022.29),您需要将其转换为数字,以便从金额中获得费用 (25%)。

首先,这里的问题是 get_total() 函数响应一个字符串。

修复此字符串的正确方法是一个简单的示例,例如

<?php
    $totalAmountString = $commerce->cart->get_total(); //<span class="amount">560&nbsp;&euro;</span>
    $totalAmountString = strip_tags($totalAmountString); //get rid of the span - we're left with "560&nbsp;&euro;"
    $totalAmountString = str_replace(array("&nbsp;&#38;", ","), "", $totalAmountString);
    $totalAmountFloat = (float)$totalAmountString;
    $percentage = 0.25;
    $deposit = $totalAmountFloat * $percentage;

    var_dump($deposit);
?>

我们正在删除所有的 html。当您 var_dump 的字符串长度为 41 时,我知道这就是问题所在。它在字符串中返回 span 标签和 html。您只能看到数字,因为 html 是隐藏的。该行$totalAmountString = str_replace(array("&nbsp;&#38;", ","), "", $totalAmountString);可能需要根据所使用的货币符号进行编辑,&#38是美元,但可以通过两种或三种不同的方式完成。希望这可以帮助。

于 2013-08-31T18:48:06.223 回答
0

如果金额的输出有货币符号,您可以通过使用 floatval 获取浮点值来去除货币符号

<?php $amount = $woocommerce->cart->get_total(); ?>
                            <?php $percent = 4; ?>
                            <?php $deposit = floatval($amount) / $percent; ?>


                            <strong><?php echo $deposit; ?></strong>
于 2013-08-31T18:48:33.190 回答