Как подавить ошибку "Деление на ноль" и установить для результата значение null для всего приложения?

Как подавить ошибку "Деление на ноль" и установить для результата значение null для всего приложения? Говоря "для всего приложения", я имею в виду, что это не для одного выражения. Вместо этого, всякий раз, когда возникает ошибка "Деление на ноль", результат устанавливается равным нулю автоматически, и никакая ошибка не будет выбрана.

Ответы

Ответ 1

Это должно сделать трюк.

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

выходы

NULL

См. ссылки элементы управления ошибками.

ИЗМЕНИТЬ

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

В любом месте замените 1/0 вызовом функции division(1,0).

EDIT - без третьей переменной

function division($a, $b) {         
    if($b === 0)
      return null;

    return $a/$b;
}

Ответ 2

Просто как.. хорошо abc * 123-pi

$number = 23;
$div = 0;

//If it 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
} 

Как функция

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

Используйте

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

Я не могу придумать способ установить его при разделении, но я бы использовал функцию и переименовал ее в нечто вроде "d" , так что коротко!

Ответ 3

Это ужасное решение, но, к счастью, вы не будете использовать его, потому что переменная имеет значение false вместо null.

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

set_error_handler('ignore_divide_by_zero', E_WARNING);

В вашем случае я бы создал функцию, которая выполняет ваше разделение для вас.

Ответ 4

Как насчет использования тернарного оператора, например:

$a = $c ? $b/$c : null;