Come sopprimere l'errore "Divisione per zero" e impostare il risultato su zero per l'intera applicazione? Dicendo "per l'intera applicazione", voglio dire che non è per una singola espressione. Invece, ogni volta che si verifica un errore "Divisione per zero", il risultato viene impostato automaticamente su null e non viene generato alcun errore.Come sopprimere l'errore "Divisione per zero" e impostare il risultato su null per l'intera applicazione?
risposta
Questo dovrebbe fare il trucco.
$a = @(1/0);
if(false === $a) {
$a = null;
}
var_dump($a);
uscite
NULL
Vedi gli arbitri qui error controls.
EDIT
function division($a, $b) {
$c = @(a/b);
if($b === 0) {
$c = null;
}
return $c;
}
In ogni luogo sostituto 1/0
dalla funzione chiamata division(1,0)
.
EDIT - Senza terza variabile
function division($a, $b) {
if($b === 0)
return null;
return $a/$b;
}
Wow è così semplice (vorrei averlo pensato) ma lo imposta su null? –
mmm giusto, ma sono ancora sconcertato dalla sua modifica: P –
Questo è il miglior concetto generale. Tuttavia, fallisce quando 'a == 0'. Dovresti cambiare il condizionale per essere 'if ($ c === false)'. Ma in realtà, dovresti semplicemente controllare se '$ b == 0'. ;) – Matthew
Semplice come .. bene 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
}
In funzione
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;
}
Usa è come questo
$number = mydivide(20,5)//equals four
Non riesco a pensare ad un modo per set ogni volta che c'è divisione ma mi piacerebbe utilizzare la funzione e rinominarlo a qualcosa come "d" quindi è breve!
Questa è una soluzione orribile, ma per fortuna, non lo userà perché la variabile è impostata su false
invece di null
.
function ignore_divide_by_zero($errno, $errstring)
{
return ($errstring == 'Division by zero');
}
set_error_handler('ignore_divide_by_zero', E_WARNING);
Nel tuo caso, creerei una funzione che fa la tua divisione per te.
Cosa succede ad usare un operatore ternario, in questo modo:
$a = $c ? $b/$c : null;
Questo in realtà non gestisce l'aspetto di 'tutta l'applicazione'. –
- 1. Qual è il risultato della divisione per zero?
- 2. Il risultato della divisione è sempre zero
- 3. gcc: divisione per zero
- 4. PHP, Come prendere una divisione per zero?
- 5. Divisione per zero in Haskell
- 6. divisione per zero - c programmazione
- 7. Divisione per errore zero di Solr StatsComponent per il campo data in caso di nessun risultato
- 8. Come causare una divisione intenzionale per zero?
- 9. Evita la divisione per zero in PostgreSQL
- 10. divisione per zero errore nel file XML
- 11. Divisione per zero non lancia SIGFPE
- 12. Come impostare DateTime su null
- 13. divisione Integer sempre zero
- 14. Come gestire condizionalmente divisione per zero con MySQL
- 15. come sbarazzarsi della divisione awk fatale per errore zero
- 16. SQL Server, divisione restituisce zero
- 17. Divisione restituisce zero
- 18. Divide per prevenzione zero
- 19. divisione per zero/soluzione nulla in SSRS Rapporto 2008
- 20. Sostituisci divisione con zero numpy
- 21. Divisione per errore zero durante l'utilizzo del modulo
- 22. La divisione Java per zero non lancia un'eccezione Arithmetic - perché?
- 23. Come fa il rubino a gestire la divisione zero?
- 24. Impossibile impostare booleano su null
- 25. divisione Zero non genera un'eccezione in NUnit
- 26. Impostare i delegati su zero sotto ARC?
- 27. È comune impostare gli oggetti su zero?
- 28. restituire zero per il conte() su IEnumerables nulli
- 29. SQL per IsNull e per Zero
- 30. Perché la divisione per zero con numeri in virgola mobile (o precisione doppia) non genera java.lang.ArithmeticException:/per zero in Java
Se siete alla ricerca di C++ l'overloading degli operatori possibilità, in modo che il PHP non sostenerlo, vedere la discussione qui: http: // StackOverflow .com/questions/787692/operator-overloading-in-php – Igor
Gli errori di soppressione sono generalmente considerati una cattiva pratica. Puoi usare 'try' e' catch', ma non '@'. Dovresti scrivere il tuo codice in modo tale che i valori errati siano disinfettati e non vengano emessi errori o avvertimenti dall'esecuzione standard del tuo codice. – Mike
in 'SQL Server', c'è un piccolo trucco' NULLIF() 'http://www.bennadel.com/blog/984-using-nullif-to-prevent-divide-by-zero-errors-in-sql .htm – Jaider