Birisi ?
ve :
operatörleri PHP ne açıklayabilir misiniz?
örneğin:
(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
Bu conditional operator olduğunu.
$x ? $y : $z
"aksi takdirde $z
kullanmak $x
doğruysa, o zaman $y
kullanın" anlamına gelir.
İnsanlar ?:
"üçlü operatörü" olduğunu söyleyecektir. Bu yanlış. ?:
, üç işlenen anlamına gelir a üçlü operatörüdür. İnsanlar genellikle belirli bir dil olan tek üçlü operatördür, çünkü onun ismi "üçlü operatörü" olduğunu düşünerek rüzgar.
Ben ne zaman ve neden bunları kullanmak ve zaman değil, bunları kullanmak için bunları kullanmak için nasıl, ne olduklarını, ternaries üzerinde biraz yazmak için gidiyorum.
What is a ternary operator?
Bir üçlü ? :
if
ve else
için kısaltmadır. Bu temelde bu. this page resmi bir açıklama daha aşağı yönlü "Üçlü Operatörler" yarısını bakın.
As of PHP 5.3:
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.
How are ternaries used?
Burada normal if
deyimi nasıl göründüğü:
if (isset($_POST['hello']))
{
$var = 'exists';
}
else
{
$var = 'error';
}
Adlı bir üçlü içine aşağı kısaltmak edelim.
$var = isset($_POST['hello']) ? 'exists' : 'error';
^ ^ ^ ^ |
| then | else |
| | |
if post isset $var=this $var=this
Çok daha kısa, ama okumak için belki zor. Onlar önceki örnekte $var
gibi değişkenleri ayarlamak için kullanılır, ama aynı zamanda echo
ile bunu yapabilirsiniz, ve bir değişken sahte olup olmadığını kontrol etmek için değil sadece:
$isWinner = false;
// Outputs 'you lose'
echo ($isWinner) ? 'You win!' : 'You lose';
// Same goes for return
return ($isWinner) ? 'You win!' : 'You lose';
Why do people use them?
Ben ternaries seksi olduğunu düşünüyorum. Bazı geliştiriciler göstermek istiyorum, ama PHP 5.4 'ın en son short echos gibi diğer özellikleri ile birlikte bazen especially, kodunuzda sadece look nice ternaries.
<?php
$array = array(0 => 'orange', 1 => 'multicoloured');
?>
<div>
<?php foreach ($array as $key => $value) { ?>
<span><?=($value==='multicoloured')?'nonsense':'pointless'?></span>
<?php } ?>
</div>
<!-- Outputs:
<span>
pointless
</span>
<span>
nonsense
</span>
-->
(Eğer MVC paradigma endişelerinizi ayırarak eğer) bir 'görünümü / şablon' içinde olduğunuzda, biraz konu dışı oluyor, mümkün olduğunca orada az sunucu tarafı mantığını istiyorum. Yani, ternaries ve diğer kısa-el kodu kullanarak bazen ileriye iyi yoludur. "Diğer kısa-el kodu" ile, yani:
if ($isWinner) :
// Show something cool
endif;
Note, I personally do not like this kind of shorthand if / endif nonsense
How fast is the ternary operator?
Mikro optimizasyonlar GİBİ insanlar. Onlar sadece bunu. Yani bazıları için, if
/ else
ifadeleri, normal ile karşılaştırıldığında ternaries gibi hızlı şeyler ne kadar bilmek önemlidir.
Okuma this post, farklılıklar 0.5ms üzeresiniz. Bu bir sürü!
Oh hayır o değil, bekleyin. Art arda, üst üste bunlardan binlerce ve binlerce yapıyoruz eğer sadece bir çok şey. Eğer olmayacaktır hangi. Bu yüzden burada kesinlikle anlamsız, hiç hız optimizasyonu konusunda endişelenmeyin.
When not to use ternaries
Sizin kodu olmalıdır:
Açıkçası bu kişilerin istihbarat tabidir ve koduna bakmak için gelirken bu tür kavramları anlama bilgisi / genel düzeyini kodlama. Önceki örneklerde olduğu gibi tek bir basit üçlü tamam, aşağıdaki gibi bir şey, ancak, not yapıyor olması gereken:
echo ($colour === 'red') ? "Omg we're going to die" :
($colour === 'blue' ? "Ah sunshine and daisies" :
($colour === 'green' ? "Trees are green"
: "The bloody colour is orange, isn't it? That was pointless."));
Bu üç nedenden dolayı anlamsız:
switch
deyimi kullandımConclusion
Ternaries gerçekten basit ve çok hakkında kadar çalıştı şey vardır. O gerçekten bir fark yapmaz, any gelişmeleri hızlandırmak düşünmüyoruz. Onlar simple ve look nice zaman bunları kullanın ve her zaman kod gelecekte başkaları tarafından okunabilir olacaktır emin olun. Hiçbir ternaries demektir, o ternaries kullanmayın.
Koşullu operatör ?: Bir durumunu kontrol ve durumun değerine bağlı olarak bir değer seçmek için kullanılan bir operatördür. Bu, aşağıdaki biçimde ifade edilir:
variable = condition ? expression1 : expression2;
Aşağıdaki gibi çalışır ...
Örneğin:
x = (a>b) ? 5 : 9
Bu bağlamda, x, ilk durumu (a> b) değerlendirilir. Bu koşul doğruysa olursa, o zaman x değeri 5 olur (yani, x = 5) olacaktır. Ama durum (a> b) yanlış olur, o zaman x değerini elde eğer 9 (yani, x = 9).
Ternary Operator
Sometimes conditional operator ?: is also called a ternary operator. This is so because it involves three operands. Örneğin:
x ? y : z
Burada, x, y ve z, üç işlenen bulunmaktadır. Koşul x doğruysa, o zaman değer y aksi z değeri atanır atanır.