Bana bu kodu anlamak yardımcı [çoğaltmak]

12 Cevap

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

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

Birisi bana yukarıdaki kodu anlamanıza yardımcı olabilir? Ben :) php için oldukça yeni ? ve : ile ne kadar?

Ben takdir ediyorum!

12 Cevap

Bu üçlü operatördür. Bu temelde diyor

if(isset($_GET['id']))
{
   $id = intval($_GET['id']);
}
else
{
   $id = 0;
}

Bu bir ternary operator olduğunu.

Ne olduğunu, $_GET['id'] ayarlanırsa, $id olan intval($_GET['id']), aksi halde, $id 0 olduğunu belirtti.

? ve :, bir satır içi parçalarıdır if.

isset($_GET['id']) doğruysa Temelde, intval($_GET['id']) kullanılır. Aksi takdirde, $id 0 alır.

x? y: z = x doğruysa o zaman y else z

Tam da bu anlama gelir:

$id = 0;
if(isset($_GET['id'])) {
    $id = intval($_GET['id'];
}

Bu if için kısa gösterim. Gösterim C ile alınır

Bu yeniden yazılmış olabilir:

if (isset($_GET['id']) ) {
     $id = intval($_GET['id']);
} else {
     $id = 0;
}

Onun bir üçlü olarak adlandırılır

Bu türüne intval ($ _GET ['id']) isset ($ _GET ['id']) else true döndürür eğer 0 ile dolduracaktır ile $ id doldurur

$ _GET ['Id'] o $ id ayarlar varsa o $ id = 0 ayarlar değilse = $ _GET ['id'], o Üçlü kullanır. http://uk3.php.net/ternary

Bu bir üçlü operatörü bulunuyor. Temel olarak, bu var

if (condition) {

} else {

}

tek satırda.

Kod diyor

GET var id belirlenmişse, o Greco Değerlendirme değişkenin tamsayı eşit $ id VAR ayarlayın.

Argümanlar uğruna da, (int) çok daha hızlı olduğu kanıtlanmıştır ile döküm.

Bu açıklama aslında bu anlama gelir:

$id = 0;

if (isset($_GET['id']))
{
    $id = intval($_GET['id']);
}
else
{
    $id = 0;
}

?: operatörü anlamına "durum daha sonra other_result başka neden ise," her biri bir satırda. Temelde bir boolean (true/false) durumuna göre $ id değişkenin değerini kuruyoruz. Koşul doğruysa, ilk sonuç $id değişkenin değerini ayarlamak için kullanılır. Aksi takdirde, ikinci değerini kullanır.

Bunun için sadece steno bir if ifadesi (ternary operator) ve aynıdır:

if (isset($_GET['id']))
{
    $id = intval($_GET['id']);
}
else
{
    $id = 0;
}