Mengevaluasi ke operan kiri jika operan kiri adalah truthy , dan operan kanan sebaliknya.
Dalam pseudocode,
foo = bar ?: baz;
secara kasar memutuskan untuk
foo = bar ? bar : baz;
atau
if (bar) {
foo = bar;
} else {
foo = baz;
}
dengan perbedaan itu bar
hanya akan dievaluasi sekali.
Anda juga dapat menggunakan ini untuk melakukan "pemeriksaan sendiri" foo
seperti yang ditunjukkan dalam contoh kode yang Anda posting:
foo = foo ?: bar;
Ini akan menetapkan bar
untuk foo
jika foo
null atau falsey, yang lain itu akan meninggalkan foo
berubah.
Beberapa contoh lagi:
<?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'
?>
Omong-omong, itu disebut operator Elvis .
null
atau apa pun. Katakan saja '