我有这样的代码:
add_filter( 'woocommerce_sale_flash2', 'lx_custom_onsale_label', 10, 2 );
function lx_custom_onsale_label() {
global $product;
$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
$absolute = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) ) );
if ($product->get_regular_price() > 100) {
return '<span class="onsalex bg_primary headerfont">'. sprintf( __(' -%s', 'salex' ), $absolute . ',-' ).'</span>';
}
else if ($product->get_regular_price() < 1) {
return '<span class="onsalessszzzx bg_primary headerfont">'. sprintf( __(' -%s', 'salex' ), $absolute . ',-' ).'</span>';
}
else {
return '<span class="onsalexzzz bg_primary headerfont">'. sprintf( __(' -%s', 'salex' ), $percentage . '%' ).'</span>';
}
}
除非分隔符为O,否则一切正常,通知将显示:
警告:除以零 第553行的D:\ SERVER \ InstantWP_4.3.1 \ iwpserver \ htdocs \ wordpress \ wp-content \ themes \ MYTHEME \ functions.php
第553行是这段代码:
$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
我不明白如何避免该代码的条件为零的警告。
非常感谢您的帮助。
答案 0 :(得分:1)
替换:
$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
by:
$percentage = 0;
if ( $product->get_regular_price() > 0 )
$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
奇怪的答案我知道,但如果你不除零,就没有错误。
解释:
正如@domdom指出“不要除零”这是一个很好的答案,并且一个好的做法,因为除以零在数学中不是“合法的”。
答案 1 :(得分:0)
if($product->get_regular_price()> 0)
{
//do your work
}
在分割前检查价格是否为零。
答案 2 :(得分:0)
只需检查$product->get_regular_price()
是否大于/不等于零(如果可能为负值):
if ($product->get_regular_price() != 0){
// Do stuff
} else {
// Do something with the zero
}
只有正数:
if ($product->get_regular_price() > 0){
// Do stuff
} else {
// Do something with the zero
}
答案 3 :(得分:0)
替换此行
$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
与
$percentage = $product->get_regular_price() != 0 ? round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 ) : 0;
问题已经回答了,这是使用时态运算符的另一种方法
答案 4 :(得分:-1)
$var = @($val1 / $val2);