如何避免除零错误?

时间:2017-04-13 09:16:57

标签: php wordpress

我有这样的代码:

 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 );

我不明白如何避免该代码的条件为零的警告。

非常感谢您的帮助。

5 个答案:

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