Elvis-Operator (?:) Enträtselt in PHP
In den Tiefen einer komplexen PHP-Codebasis stoßen Sie möglicherweise auf einen mysteriösen Operator: den ?: Operator. Er wird als „Elvis-Operator“ bezeichnet und Sie fragen sich vielleicht: „Was ist sein Zweck?“
Der ?:-Operator wertet im Wesentlichen seinen linken Operanden aus, wenn der linke Operand als „wahr“ angesehen wird, und der sonst der rechte Operand. Mit anderen Worten:
foo ?: bar
entspricht in etwa dem ternären Operator:
foo ? foo : bar
oder in einer traditionellen if-else-Anweisung:
if (foo) { foo = foo; } else { foo = bar; }
Im Gegensatz zum ternären Operator wertet der ?:-Operator jedoch den linken Operanden nur einmal aus, was die Effizienz erhöht.
Beispielverwendung
Eine Gemeinsamkeit Der Anwendungsfall dient der Selbstprüfung, wie im Codeausschnitt zu sehen ist:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Hier wird das Ergebnis von $this->_handle->result() $items if zugewiesen $items ist null oder falsch, während $items andernfalls unverändert bleibt.
Zusätzlich Beispiele
Hier noch ein paar Beispiele, um das Verhalten zu verdeutlichen:
var_dump(5 ?: 0); // 5 var_dump(false ?: 0); // 0 var_dump(null ?: 'foo'); // 'foo' var_dump(true ?: 123); // true var_dump('rock' ?: 'roll'); // 'rock' var_dump('' ?: 'roll'); // 'roll' var_dump('0' ?: 'roll'); // 'roll' var_dump('42' ?: 'roll'); // '42'
Sollten Sie in Zukunft auf einen ?:-Operator stoßen, denken Sie daran, dass sein Ziel darin besteht, eine prägnante Möglichkeit zur Auswertung und Zuweisung auf der Grundlage der Wahrhaftigkeit bereitzustellen, um Ihren Code effizienter und lesbarer zu machen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3