Das PHP Script Verzeichnis
Werbung

Entweder oder

Der normale Weg eine entweder/oder Entscheidung zu formulieren, ist:

if () {
$a = $b;
} else {
$a = $c;
}

In PHP (und anderen Sprachen), kann man dies vereinfachen:

$a = ? $b : $c;

Im Klartext bedeutet das: Wenn zutrifft (wahr ist, also true ergibt), dann führe aus was hinter dem Fragezeichen kommt, bis zum Doppelpunkt. Wenn die Bedingung nicht zutrifft (also falsch ist und false ergibt), dann führe aus was hinter dem Doppelpunkt kommt.

Nehmen wir an, wir haben eine Funktion der ein Parameter übergeben werden kann. Dieser Parameter wird, wenn es sich um einen gültigen Wert handelt, in eine globale Variable übernommen. Wird kein Parameter übergeben, oder handelt es sich nicht um einen gültigen Parameter, dann soll der letzte definierte Wert (der letzte gültige, übergebene Parameter) eingesetzt werden.

function test($param==““) {
$a = empty($param) ? $letztesA : $letztesA = $param;
}

Das passiert: Ist der übergebene Parameter ($param) leer (empty), bekommt $a den Wert von $letztesA zugewiesen. Ist $param nicht leer, geschehen 2 Dinge: $letztesA bekommt den Wert von $param, und das Ergebnis wird an $a weiter gegeben.

Konventionell sähe das so aus:

function test($param==““) {
if (empty($param)) {
$a = $letztesA;
} else {
$a = $param;
$letztesA = $param;
}
}

oder besser:

function test($param==““) {
if (empty($param)) {
$param = $letztesA;
}
$a = $letztesA = $param;
}