[PHP] Division

Flatuser

Well-known member
30 Juli 2006
71
3
Hallo...

Ich habe folgenden Codeschnipsel:

$zahl=$cleanVal["awn-0"]>0?round(($cleanVal["awn-0"]/$cleanVal["alo-0"]),2):0;

und wenn die zweite Zahl "Alo-0" null ist, kommt natrülich eine Fehlermeldung, dass man nicht durch null teilen kann...

nun meine Frage:

Wie kann ich die Zeile ändern, dass wenn die zweite Zahl MAL eine null ist, er keine Fehlermeldung raus gibt?
 
if($cleanVal["alo-0"] != 0) {
$zahl=$cleanVal["awn-0"]>0?round(($cleanVal["awn-0"]/$cleanVal["alo-0"]),2):0;
}

Oder was meinst du? ;)
 
Änder das mal folgendermassen um, dann passt das immer, da 0/(x>0) immer 0 sein wird:
PHP:
$zahl=$cleanVal["alo-0"]>0?round(($cleanVal["awn-0"]/$cleanVal["alo-0"]),2):0;
 
Jo, siehst Du falsch. Guck Dir das nochmal genau an. Der erste verwendete Index ist anders.

@Goltergaul:

Ich bin grad zu faul, weiter drüber nachzudenken, ob das mathematisch nun etwas weiträumig anderes ist, aber für die Anwendung, für die es scheinbar gedacht (Division by Zero verhindern) ist meine Lösung einfach nur die korrigierte Variante des Ausgangscodes.
 
Zuletzt bearbeitet:
warum nicht einfach

PHP:
$zahl = $cleanVal["awn-0"] > 0 && $cleanVal["alo-0"] > 0 ? round(($cleanVal["awn-0"] / $cleanVal["alo-0"]), 2) : 0;
 
*narf* Es gibt keine if-Schleifen. Schleifen definieren sich durch Wiederholungen.

Und Geschwindigkeitsunterschiede zwischen if/else und dem ternären Operator dürften verschwindend gering sein.
 
Ansichtssache. Solange man keine ellenlangen Statements nutzt oder die ternären Operatoren auch noch schachtelt *brrr*, finde ich persönlich es nicht so viel unlesbarer - solange ich einen Editor mit Syntax Highlighting habe.

Und so nebenbei müsstest Du von Deiner Signatur ausgehend doch ein ziemlicher Freund von den ternären Operatoren sein... :mrgreen: ;)
 
bin ich auch aber wenn das statment über 3 zeilen geht (weils einfach zu lang ist) sollte man doch mal drüber nachdenken ;)

für einfache sachen einfach nur genial man spart sich 3 zeilen ;)
 
einziger vorteil durch ternären Operator verschlechter man die lesbarkeit eines Codes um vielfaches.
deswegen schreibe ich solche langen oder längere meistens so
PHP:
$zahl = $cleanVal["awn-0"] > 0 && $cleanVal["alo-0"] > 0 ?
                 round(($cleanVal["awn-0"] / $cleanVal["alo-0"]), 2) 
           : 0;
und du meintest Nachteil oder? ;)

Solange man keine ellenlangen Statements nutzt oder die ternären Operatoren auch noch schachtelt *brrr*
oO *duck und weg*