我是PHP的新手,对于一个woocommerce,我试图将价格乘以2。
$priceOriginal = WC()->cart->get_cart_subtotal(); // return 450,00€
$priceNoCur = preg_replace( '/&.*?;/', '', $priceOriginal ); // return 450,00
$priceNoCurDot = preg_replace( '/,/', '.', $priceNoCur); // return 450.00
$priceFinalDot = floatval($priceNoCurDot) * 2;
echo $priceFinalDot; // return 0
我找到了如何删除de euro标志并用点来改变昏迷,但当我乘以2时,我的结果为0 ......为什么!?
解
我找到另一种方式来调用价格:$priceOriginal = WC()->cart->total;
然后我可以将此数字乘以正常计算。
答案 0 :(得分:2)
你的priceOriginal
不是什么告诉,如果我认为它是“450,00€”之类的东西,那么当你将900
加倍时,我必须返回2
。在进行任何进一步操作之前尝试var_dump($priceOriginal);
$priceOriginal = "450,00€";
$priceNoCur = preg_replace( '/&.*?;/', '', $priceOriginal ); // return 450,00
$priceNoCurDot = preg_replace( '/,/', '.', $priceNoCur); // return 450.00
$priceFinalDot = floatval($priceNoCurDot) * 2;
echo $priceFinalDot; // returns 900
用于调试:
$priceOriginal = WC()->cart->get_cart_subtotal();
var_dump($priceOriginal); //see what you get
根据您的评论,如果它正在返回string(119) "450,00€"
,那么您应该在执行进一步操作之前修剪$priceOriginal
变量$priceOriginal = trim(WC()->cart->get_cart_subtotal());
,因为它可能有一些额外的空格字符。