Er wertet den linken Operanden aus, wenn der linke Operand wahrheitsgemäß und andernfalls der rechte Operand.
In Pseudocode,
foo = bar ?: baz;
löst sich in etwa auf
foo = bar ? bar : baz;
ou
if (bar) {
foo = bar;
} else {
foo = baz;
}
mit dem Unterschied, dass bar
wird nur einmal ausgewertet.
Sie können damit auch eine "Selbstkontrolle" durchführen foo
wie in dem von Ihnen geposteten Codebeispiel gezeigt:
foo = foo ?: bar;
Dadurch wird die bar
a foo
wenn foo
null oder falsch ist, sonst bleibt foo
unverändert.
Einige weitere Beispiele:
<?php
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'
?>
Übrigens, es heißt die Elvis Betreiber .
9 Stimmen
Ich kannte den Namen 'Elvis' nicht. +1 für das hier.