?: Operatör PHP [yinelenen]

3 Cevap php

Possible Duplicate:
What is the PHP ? : operator called and what does it do?

Ben bazı PHP kodu, bugün bunu gördüm.

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

?: ne yapıyor? Bir dönüş gerçek değeri olmayan bir Üçlü operatör var mı? PHP 5.3 şey?

Ben bazı test kod çalıştı ancak sözdizimi hataları var.

3 Cevap

Bu LeftHand'e örtülü bir nullcheck yapar ve boş olmadığı zaman yalnızca onu atar, başka o righthand atar.

Pseudocode,

foo = bar ?: baz;

kabaca giderir

foo = (bar != null) ? bar : baz;

veya

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

Ayrıca yayınlanan kod örneğinde gösterildiği gibi bir foo arasında "self-check" yapmak için kullanabilirsiniz:

foo = foo ?: bar;

Bu foo null olduğunda, başka o foo "sağlam" tutacak bar foo atamak olacaktır.

It's by the way called the Elvis operatveya.

Elvis operatveya

Bkz the docs

PHP 5.3 'ten beri, bu üçlü operatörü orta bölümünü terk etmek mümkündür. İfade ifade1:? Ifade3 döner expr1 DOĞRU olarak değerlendirirse Deyim1 ve ifade3 aksi.

Evet, bu PHP 5.3 yeni. Bu YANLIŞ olarak değerlendirilir eğer DOĞRU veya alternatif bir değer olarak değerlendirilir eğer boolean test değerinin sonucunu döndürür ya.