PHP部门有变量,不能正常工作

时间:2013-08-31 18:36:08

标签: php wordpress woocommerce

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

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

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

感谢任何帮助,我觉得我错过了很简单的事情......

由于

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


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

4 个答案:

答案 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(); ,您将获得字符串 (浮动) 您转换为浮动

  

PHP.NET about casting

答案 1 :(得分: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是一美元,但可以采用两种或三种不同的方式。希望这会有所帮助。

答案 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>