Menu

PHP isset(): Değişken veya Dizi Anahtarı Kontrolü

isset($var), bir değişken var ve null değilse true, değilse false döndürür ve hiçbir uyarı vermez. Dizi anahtarlarını ve nesne özelliklerini de kontrol eder: isset($user['email']). Birden çok değişkenle isset, iç içe anahtarlar, isset ile empty, isset ile array_key_exists ve form gönderimlerini kontrol etme.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

isset($var), değişken varsa ve değeri null değilse true döndürür. Tanımsız, unset edilmiş ya da null tutan bir değişken için false döndürür ve asla uyarı yazdırmaz.

isset() yalnızca bir şeyin orada olup olmadığına bakar. 0, "" veya [] gibi atanmış ama boş bir değer yine true döndürür. "Atanmış ve boş değil" istiyorsanız empty fonksiyonunu (olumsuzlayarak) kullanın.

isset ile bir dizi anahtarının var olup olmadığını kontrol etmek

isset() en çok burada kullanılır. Var olmayan bir anahtarı okumak normal bir PHP kurulumunda Warning: Undefined array key yazdırır; önce isset() ile kontrol etmek yazdırmaz. İç içe anahtarlarda da çalışır ve eksik ilk seviyede sessizce durur.

Yalnızca değere ya da bir varsayılana ihtiyacınız olduğunda $user["website"] ?? "none" aynı kontrolü tek adımda yapar. Null birleştirme operatörüne bakın.

Birden çok değişkenle isset

Birkaç argüman geçirin; isset() yalnızca hepsi atanmış ve null değilse true döndürür. Gerekli her alanın gelip gelmediğini kontrol etmenin kısa bir yoludur.

Stringlerde ve nesnelerde isset

Bir stringde isset($str[5]), 5. konumda bir karakter olup olmadığını kontrol eder; bu da hızlı bir uzunluk kontrolüdür. Bir nesnede bir özelliği kontrol eder; özel verisi olan bir sınıfta, sınıf __isset() metodunu tanımlıyorsa isset() onu çağırır.

isset, empty ve is_null

Üç kontrolü ve düz (bool) dönüştürmesini karşılaştırmak için tabloda bir $x değeri seçin. Her hücre PHP 8.3 ile hesaplandı.

$x'in her değeri için isset, empty ve is_null
Point at or tap a cell to read it as PHP.
$xissetemptyis_nullbool
null
false
0
"0"
""
" "
[]
"a"
1
0.0
"0.0"
Every cell computed by PHP 8.3.19.

Hatırlanacak kalıp:

  • isset() yalnızca null ve var olmayan şeyler için false olur.
  • empty() bunlar için ve ayrıca her falsy değer için true olur: false, 0, 0.0, "", "0", [].
  • is_null(), var olan değişkenler için isset() fonksiyonunun tersini verir, ama değişken tanımsız olduğunda uyarı verir. Bunun yerine isset() veya === null kullanın.

Bir formun gönderilip gönderilmediğini kontrol etmek

isset(), bir form alanının gelip gelmediğini görmenin klasik yoludur. Bu bloğu çalıştırın, bir isim yazın ve Send'e basın: aynı betik $_POST dolu olarak yeniden çalışır.

Boş bir metin alanı yine de "" olarak gönderilir, bu yüzden herhangi bir gönderimden sonra isset($_POST["name"]) true olur. İşaretlenmemiş bir onay kutusu ise hiç gönderilmez; bu da isset() fonksiyonunu onay kutuları için tam doğru test yapar. Boş olmayan bir değer şart koşmak için bloğun yaptığı gibi kırpılmış stringi kontrol edin. Formlar sayfası doğrulamalı eksiksiz bir form oluşturur.

isset ile array_key_exists

İkisi, değeri null olan bir anahtar dışında her şeyde aynı sonucu verir. isset() onu eksik sayar, array_key_exists() saymaz.

Verinizde "null olarak ayarlanmış" ile "yapılandırılmamış" farklı şeyler ifade ediyorsa array_key_exists() kullanın. Aksi hâlde isset() daha kısadır ve bir fonksiyon çağrısı değil bir dil yapısı olduğu için biraz daha hızlıdır.

Sık yapılan hata: bir ifade üzerinde isset

isset() yalnızca değişkenleri, dizi elemanlarını ve özellikleri kabul eder. Bir fonksiyon sonucu veya bir sabit geçirmek bir derleme hatasıdır:

<?php
if (isset(trim($input))) {}
PHP Fatal error:  Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in /home/index.php on line 2

Sonucu önce bir değişkende saklayın ya da değerin kendisini test edin: mesajın önerdiği gibi null !== $expr ya da bir string için trim($input) !== "".

Sıkça Sorulan Sorular

PHP'de isset() ne işe yarar?

isset($x), $x var ve null değilse true, değilse false döndürür. Tanımsız bir değişken veya dizi anahtarı için asla uyarı vermez, bu yüzden isset($_POST['email']) gibi istek verilerinde güvenlidir.

PHP'de isset() ile empty() arasındaki fark nedir?

isset() "bu var mı ve null değil mi" diye sorar; empty() ise "bu eksik mi ya da falsy mi" diye sorar. 0, "", "0" ve [] için isset() true döndürür, empty() de true döndürür. null veya eksik bir anahtar için isset() false, empty() ise true olur. !empty($x), isset($x) && $x ifadesinin truthy olmasıyla aynıdır.

isset() birden fazla değişkeni kontrol edebilir mi?

Evet: isset($a, $b, $c) yalnızca her biri atanmış ve null değilse true döndürür. Atanmamış ilk değişkende durur.

isset() mi yoksa array_key_exists() mi kullanmalıyım?

Yalnızca anahtar null değeriyle var olduğunda farklılaşırlar: isset($arr['k']) false, array_key_exists('k', $arr) ise true döndürür. null anlamlı bir saklanan değer olduğunda array_key_exists kullanın; aksi hâlde isset daha kısa ve biraz daha hızlıdır.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA