Bedingungen & Logik
If-, Case- und verschachtelte Logikmuster.
Mit If() und Case() bilden Sie Preislogik, Materialumschalter und optionale Komponenten direkt in Formeln ab.
Grundform von If()
If(Bedingung; WertWennWahr; WertWennFalsch) Beispiele: If($width > 1000; $width * 1.1; $width) → 10 % Aufschlag für breite Ausführungen If($material == "steel"; 7.85; 2.7) → Dichte je Material
Verschachtelte Bedingungen
Mehrstufige Regeln lassen sich über verschachtelte If()-Aufrufe aufbauen, etwa für Staffelpreise oder Abhängigkeiten vom Material.
If($width > 2000;
$width * 1.2;
If($width > 1000;
$width * 1.1;
$width
)
) → StaffelpreisCase für mehrere Verzweigungen
Case() prüft die Bedingungen der Reihe nach und liefert den Wert der ersten wahren. Die Argumente kommen paarweise als Bedingung;Wert, ein optionales letztes Argument ist der Standardwert, wenn keine Bedingung zutrifft.
Case(Bedingung1; Wert1; Bedingung2; Wert2; ...; Standard) Die Bedingungen werden der Reihe nach geprüft; Case liefert den Wert der ersten wahren Bedingung. Das letzte Argument ist der Standardwert, wenn keine Bedingung zutrifft (ohne ihn liefert Case 0). Jede Bedingung ist ein Vergleich (zum Beispiel $Profile = "Milan"), kein bloßer Wert. Beispiel: Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0) → 13 bei $Profile "Milan", 12 bei "Milan Slim", sonst 0
Jede Bedingung in Case() ist ein Vergleich, zum Beispiel $Profile == "Milan". Case vergleicht das erste Argument nicht mit den folgenden Werten: Ein nicht leerer Text an der Stelle einer Bedingung gilt als wahr, und Case liefert den falschen Zweig.
Typische Muster
- Aufschlag: If($width > 1000; $price * 1.1; $price)
- Materialfaktor: If($material == "steel"; 7.85; 2.7)
- Mindestens 1: max($count; 1)
- Sichere Division: If($d != 0; $v / $d; 0)
- Optionale Komponente: If($hasDoor == 1; $doorPrice; 0)
- Mehrere Zweige: Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0) — Auswahl nach Profilname.
Zu tief verschachtelte If()-Ketten werden schwer lesbar. Nutzen Sie Case() oder teilen Sie die Logik in mehrere Berechnungszeilen auf.