Basit PHP isset testi

7 Cevap php

$ _GET ['FriendId'] = 55 NULL dönüyor olsa aşağıda Bu, onu beklediğiniz nasıl olayı çalışmak için görünmüyor

<?PHP

$_GET['friendid'] = 55;

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

echo $friendid;
exit;

?>

7 Cevap

! çıkarın. Sen ifadeyi inkâr etmek istemiyorum.

$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';

Eğer tembel ve riskli iseniz, error control operator @ ve ternary operator kısa formu kullanabilirsiniz.

$friendid = @$_GET['friendid']?: 'empty';

Şu anda üçlü operatörü ile çalışıyoruz:

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

Bir if-else tablosuna yıkmak ve bu gibi görünüyor:

if(!isset($_GET['friendid']))
   $friendid = $_GET['friendid'];
else
   $friendid = 'empty';

Gerçekten if açıklamada oluyor ne bakmak:

!isset($_GET['friendid'])

Ünlem işaretine dikkat (!) isset fonksiyonun önünde. Bu, "tam tersini" demek için başka bir yolu. Burada ne yapıyoruz zaten $_GET['friendid'] ayarlanan hiçbir değeri olmadığı kontrol edilir. Ve eğer öyleyse, $friendid bu değeri almalıdır.

Ama gerçekten, bu $_GET['friendid'] bile yok beri kıracak. Ve sen orada şey değer alamaz.

İlk if Şimdi durumu yanlış ve else seçeneğine aktarır, böylece baştan alarak, size, $_GET['friendid'] için bir değer belirledik.

Bu durumda, empty için $friendid değişkenin değerini ayarlayın.

Ne istediğiniz ünlem kaldırın ve sonra değeri için $friendid değerine alacaktır $_GET['friendid'] daha önce ayarlanmış olup olmadığını.

Cevabınızı itibaren Philippe sana empty ve isset arasındaki farklara bir göz olması gerekir düşünüyorum.

Değişken varsa isset özetlemek için () boolean TRUE döndürecektir. Bu nedenle, yapmanız olsaydı

$fid = $_GET['friendid'] = "";
$exists = isset($fid);

$ ['FriendId'] var $ _GET DOĞRU olacaktır bulunmaktadır. Eğer istediğiniz bu değilse ben boş içine bakmak öneririz. Boş bekliyoruz ne gibi görünüyor ki, ("") boş dize TRUE döndürecektir. Boş kullanırsanız, ben bağlantılı belgelerine bakın LÜTFEN, bunu beklemiyordum nerede boş true dönecektir başka durumlar vardır, bu gibi durumlarda açıkça yukarıdaki linkten belgelenmiştir.

HTH.

FriendId NOT set, FriendId = FriendId aksi FriendId = boşsa

Bu sorunun en iyi çözüm, yani siz de 'boş dize için' onay gerekiyorsa, bir empty().

$friendid = empty($_GET['friendid']) ? 'empty' : $_GET['friendid'];

empty() değişkeni ayarlamak, ancak, böyle bir boş dizge, boş bir dizi, tamsayı 0, mantıksal yanlış olarak, 'boş' olarak kabul edilebilir şey beslenen ise ek false döndürür olup olmadığını denetler. Değil sadece ..

Tamam, ben aşina olmayan benzer bir sorunu olan olabilir! jasondavis vardı durum.

Tür kafa karıştırıcı ama sahip değil bulmak! olarak içeri ..! isset ($ avar) karşılaştırıldığında isset ($ Avar) oldukça fark yaratabilir.

Ile! bir yerde, olduğu gibi bir EVET belirten daha fazladır

    since $_GET['friendid'] = 55; has been initialized...
                                tell me 'no' - the opposite - that it hasn't and set it to empty.
              $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

    where not having the ! tells me yes it has something in it, leave it be.

               $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

Çok daha az kafa karıştırıcı A $ = "" sonra .... o iş eğer oldu. (Veya $ A = "" PHP olanlar için).

Dizeleri bazen çok zor olabilir gibi tüm dizeleri ve bu değişkenler kullanmak bulabilirsiniz. ... Sadece benim için kavramak biraz zor şeyler yapar neden bile karışıklık yoluyla, aslında anlayabiliyorum.