SORU
3 Ocak 2010, Pazar


?: ('') Elvis operatör, PHP

Bazı PHP kodu Bunu bugün gördüm

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

?: operatörü ile burada kullanılan aşina değilim. Üçlü bir operatör gibi görünüyor, ama eğer yüklem doğruysa değerlendirilmesi gerektiği ifade atlanmış. Bu ne anlama geliyor?

CEVAP
3 Ocak 2010, Pazar


Eğer sol işlenen truthy ve sağ işlenen aksi takdirde sol işlenen olarak değerlendirilir.

İçinde yalancı,

foo = bar ?: baz;

kabaca giderir

foo = bar ? bar : baz;

ya

if (bar) {
    foo = bar;
} else {
    foo = baz;
}

bar yalnızca bir kez değerlendirilir fark ile.

Ayrıca bu "self-check" foo kod örneğinde gösterildiği gibi deftere bir şey yapmak için kullanabilirsiniz

foo = foo ?: bar;

Bu ise foo boş veya falsey ise foo 14 *atar, başka foo değişmeden bırakır.

Biraz daha örnekler:

<?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'
?>

Bu arada Elvis operator deniyor.

Elvis operator

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • IGN

    IGN

    19 EYLÜL 2006
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008