26 Stimmen

Wie verkettet man mehrere ternäre Operatoren in PHP?

Ich verwende häufig ternäre Operatoren, aber ich kann nicht mehrere ternäre Operatoren ineinander stapeln.

Ich bin mir bewusst, dass die Stapelung mehrerer ternärer Operatoren den Code weniger lesbar zu machen aber in manchen Fällen würde ich es gerne tun.

Das habe ich bis jetzt ausprobiert:

$foo = 1;
$bar = ( $foo == 1 ) ? "1" : ( $foo == 2 ) ? "2" : "other";
echo $bar; // display 2 instead of 1

Was ist die richtige Syntax?

3voto

csl Punkte 10539

Stapeln Sie einfach die Klammern, und Sie haben es geschafft:

$bar = ($foo==1? "1" : ($foo==2? "2" : "other"));

Nebenbei bemerkt, wenn Sie viele Klauseln haben, sollten Sie eine switch :

switch ( $bar ) {
  case 1:  echo "1";
  case 2:  echo "2";
  default: echo "other";
}

Wenn der Schalter lang wird, können Sie ihn in eine Funktion verpacken.

3voto

Serg Punkte 538
$foo = 1;
$bar = ( $foo == 1 ) ? "1" : (( $foo == 2 ) ? "2" : "other");
echo $bar;

Verwenden Sie einfach ein zusätzliches ( ) und es wird funktionieren.

2voto

Yuri Stuken Punkte 12070

Fügen Sie die Klammern hinzu:

$bar = ( $foo == 1 ) ? "1" : (( $foo == 2 ) ? "2" : "other");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X