How to suppress the “Division by zero” error and set the result to null for the whole application?

前端 未结 4 1041
小鲜肉
小鲜肉 2020-12-20 13:29

How to suppress the \"Division by zero\" error and set the result to null for the whole application? By saying \"for the whole application\", I mean it is n

相关标签:
4条回答
  • 2020-12-20 14:07

    Simple as.. well abc*123-pi

    $number = 23;
    $div = 0;
    
    //If it's not 0 then divide
    if($div != 0)
      $result = $number/$div;//is set to number divided by x
    }
    //if it is zero than set it to null
    else{
      $result = null;//is set to null
    } 
    

    As a function

    function mydivide($divisior, $div){
       if($div != 0)
         $result = $divisor/$div;//is set to number divided by x
       }
       //if it is zero than set it to null
       else{
         $result = null;//is set to null
       }
       return $result;
    }
    

    Use it like this

    $number = mydivide(20,5)//equals four
    

    I can't think of a way to set it whenever there's division but I'd use the function and rename it to something like "d" so it's short!

    0 讨论(0)
  • 2020-12-20 14:15

    This is a horrible solution, but thankfully, you won't use it because the variable is set to false instead of null.

    function ignore_divide_by_zero($errno, $errstring)
    {
      return ($errstring == 'Division by zero');
    }
    
    set_error_handler('ignore_divide_by_zero', E_WARNING);
    

    In your case, I'd create a function that does your division for you.

    0 讨论(0)
  • 2020-12-20 14:15

    What about using a ternary operator, like so:

    $a = $c ? $b/$c : null;
    
    0 讨论(0)
  • 2020-12-20 14:19

    This should do the trick.

    $a = @(1/0); 
    if(false === $a) {
      $a = null;
    }
    var_dump($a);
    

    outputs

    NULL
    

    See the refs here error controls.

    EDIT

    function division($a, $b) {
        $c = @(a/b); 
        if($b === 0) {
          $c = null;
        }
        return $c;
    }
    

    In any place substitute 1/0 by the function call division(1,0).

    EDIT - Without third variable

    function division($a, $b) {         
        if($b === 0)
          return null;
    
        return $a/$b;
    }
    
    0 讨论(0)
提交回复
热议问题