Cómo suprimir el error "División por cero" y establecer el resultado en nulo para toda la aplicación? Al decir "para toda la aplicación", quiero decir que no es para una sola expresión. En cambio, siempre que se produce un error de "División por cero", el resultado se establece en nulo automáticamente y no se lanzará ningún error.¿Cómo suprimir el error "División por cero" y establecer el resultado en nulo para toda la aplicación?
Respuesta
Esto debería hacer el truco.
$a = @(1/0);
if(false === $a) {
$a = null;
}
var_dump($a);
salidas
NULL
Ver las referencias aquí error controls.
EDITAR
function division($a, $b) {
$c = @(a/b);
if($b === 0) {
$c = null;
}
return $c;
}
En cualquier lugar sustituto 1/0
por la llamada a la función division(1,0)
.
EDITAR - Sin tercera variable
function division($a, $b) {
if($b === 0)
return null;
return $a/$b;
}
Wow, eso es tan simple (ojalá lo hubiera pensado), pero ¿lo establece en nulo? –
mmm bien, pero todavía estoy perplejo por su edición: P –
Este es el mejor concepto general. Sin embargo, falla cuando 'a == 0'. Debería cambiar el condicional para que sea 'if ($ c === false)'. Pero en realidad, solo debes comprobar si '$ b == 0'. ;) – Matthew
simple como .. así 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
}
En función
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;
}
Uso que como esto
$number = mydivide(20,5)//equals four
no puedo pensar en una manera de conjunto que cada vez que hay división pero que haría uso de la función y cambiarle el nombre a algo así como"d" por lo que es corta!
Ésta es una solución horrible, pero por suerte, no se va a usar debido a que la variable se establece en lugar de false
null
.
function ignore_divide_by_zero($errno, $errstring)
{
return ($errstring == 'Division by zero');
}
set_error_handler('ignore_divide_by_zero', E_WARNING);
En su caso, crearía una función que hace su división por usted.
¿Qué pasa con el uso de un operador ternario, así:
$a = $c ? $b/$c : null;
Esto realmente no maneja el aspecto de 'toda la aplicación'. –
- 1. error de división por cero en el archivo .xml
- 2. El resultado de la división siempre es cero
- 3. División por cero en Haskell
- 4. cómo deshacerse de la awk división fatal por error cero
- 5. try-catch para la división por cero
- 6. PHP, ¿Cómo atrapar una división por cero?
- 7. ¿Cuál es el resultado de dividir por cero?
- 8. ¿Cómo establecer un fondo para toda la aplicación en Android?
- 9. ¿Cómo causar una división intencional por cero?
- 10. Cómo manejar condicionalmente la división por cero con MySQL
- 11. Establecer imagen de fondo para toda la aplicación en Android
- 12. División por cero no arroja SIGFPE
- 13. resultado inesperado en el tiempo/división int
- 14. ¿Cómo redondear el resultado de la división de enteros?
- 15. La división entera siempre cero
- 16. La inconsistencia en el comportamiento de división por cero entre diferentes tipos de valor
- 17. SQL Server, la división devuelve cero
- 18. Excepción de captura: división por cero
- 19. SSRS 2008 - Tratamiento de la división por escenarios cero
- 20. ¿Forma fácil de establecer CurrentCulture para toda la aplicación?
- 21. Suprimir el resultado de las llamadas exec() en PHP
- 22. ¿Por qué estas ecuaciones de división resultan en cero?
- 23. cómo comprobar si hay una división por cero en c
- 24. División por error cero de Solr StatsComponent for date field en caso de no resultados
- 25. ¿Cómo atrapar el error de dividir por cero en Visual Studio 2008 C++?
- 26. ¿Cómo redondear la división de enteros y tener el resultado int en Java?
- 27. Cómo configurar Thread.CurrentPrincipal para usar en toda la aplicación?
- 28. Cómo establecer la referencia enum con el valor predeterminado = nulo en el modelo ecore y gen?
- 29. Cómo establecer enumeración en nulo
- 30. Debería establecer el delegado a cero en la clase usando el delegado o en la clase
Si usted está buscando para C++ operador posibilidad de sobrecarga, por lo que el php no lo soporta, véase la discusión aquí: http: // stackoverflow .com/questions/787692/operator-overloading-in-php – Igor
La supresión de errores generalmente se considera una mala práctica. Puede usar 'try' y' catch', pero no '@'. Debe escribir su código de tal manera que los valores incorrectos se desinfecten y no se generen errores o advertencias por la ejecución estándar de su código. – Mike
en 'SQL Server', hay un pequeño truco' NULLIF() 'http://www.bennadel.com/blog/984-using-nullif-to-prevent-divide-by-zero-errors-in-sql .htm – Jaider