我在电子商务网站上划分购物车总数时遇到一些困难,以便为客户支付存款金额。
正如您将在下面看到的那样,我试图将订单总额的25%显示为存款金额。但是,我尝试过很多变种,并且都返回“0”。
如果我独立地回显任何变量,它们会回显正确的值,但是当每个变量分开时,结果每次都为“0”。
感谢任何帮助,我觉得我错过了很简单的事情......
由于
<?php $amount = $woocommerce->cart->get_total(); ?>
<?php $percent = 4; ?>
<?php $deposit = $amount / $percent; ?>
<strong><?php echo $deposit; ?></strong>
答案 0 :(得分:0)
尝试使用演员阵容 - &gt;的(field_type)强>:
<?php $amount = $woocommerce->cart->get_total(); ?>
<?php $percent = 4; ?>
<?php $deposit = (float)$amount / (int)$percent; ?>
<strong><?php echo $deposit; ?></strong>
使用强制转换,您可以将一种类型转换为其他类型。
例如,如果使用 $ woocommerce-&gt; cart-&gt; get_total(); ,您将获得字符串, (浮动) 您转换为浮动
答案 1 :(得分:0)
$commerce->cart->get_total();
函数会响应<span class="amount">560 €</span>
($ 1,022.29)等输出,您需要将其转换为数字,以便从该金额中获得费用(25%)。
首先,这里的问题是get_total()函数以字符串响应。
修复此字符串的正确方法是一个简单的示例,例如
<?php
$totalAmountString = $commerce->cart->get_total(); //<span class="amount">560 €</span>
$totalAmountString = strip_tags($totalAmountString); //get rid of the span - we're left with "560 €"
$totalAmountString = str_replace(array(" &", ","), "", $totalAmountString);
$totalAmountFloat = (float)$totalAmountString;
$percentage = 0.25;
$deposit = $totalAmountFloat * $percentage;
var_dump($deposit);
?>
我们正在删除所有的HTML。当var_dump的字符串长度为41时,我知道问题出在哪里。它返回字符串中的span标签和html。您只看到数字,因为隐藏了html。此行$totalAmountString = str_replace(array(" &", ","), "", $totalAmountString);
可能需要根据使用的货币符号进行编辑,&
是一美元,但可以采用两种或三种不同的方式。希望这会有所帮助。
答案 2 :(得分:0)
如果金额的输出有货币符号,您可以通过使用floatval获取浮点值来剥离货币符号
<?php $amount = $woocommerce->cart->get_total(); ?>
<?php $percent = 4; ?>
<?php $deposit = floatval($amount) / $percent; ?>
<strong><?php echo $deposit; ?></strong>
答案 3 :(得分:0)
如果$amount
的值的格式为“$ 1,022.29”,请尝试:
<?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>