Arasında bir fark var mı issetve !empty. Bu çift boole kontrolünü yaparsam, bu şekilde mi yoksa gereksiz mi? ve aynı şeyi yapmanın daha kısa bir yolu var mı?
isset($vars[1]) AND !empty($vars[1])
Arasında bir fark var mı issetve !empty. Bu çift boole kontrolünü yaparsam, bu şekilde mi yoksa gereksiz mi? ve aynı şeyi yapmanın daha kısa bir yolu var mı?
isset($vars[1]) AND !empty($vars[1])
Yanıtlar:
Bu tamamen gereksizdir. emptyaşağı yukarı kısayoldur !isset($foo) || !$foove buna !emptybenzerdir isset($foo) && $foo. Yani emptytersi bir şey issetartı bir değerin doğruluğu için ek bir kontrol yapar .
Başka bir deyişle, emptyaynıdır !$foo, ancak değişken yoksa uyarı atmaz. Bu işlevin ana noktası budur: ayarlanan değişken hakkında endişelenmeden bir boole karşılaştırması yapın.
Kılavuz şu şekilde koyar:
empty()tersidir(boolean) var, değişken ayarlanmamış olduğunda uyarı oluşturulur dışında.
!empty($vars[1])Burada kullanabilirsiniz .
$vars[1]bir bildirim alır.
empty, PHP'deki en yanlış anlaşılan işlevlerden biridir. "Uyarı oluşturulmaz" konusundaki küçük pasajı göz ardı etmek çok kolaydır. Belgeleri buraya göndermek için birkaç kez taramak zorunda kaldım.
empty($vars[1])$vars[1]ayarlanmamış bile uyarılara neden olmaz, ancak echo $vars[1]olacaktır. Kullanarak gerçeği kontrol ettim echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;.
0olarak kabul edilir false. PHP tek değil. Hala şikayetinizin ne olduğundan emin değilim.
isset() bir değişkenin boş olup olmadığını test eder:
http://us.php.net/manual/en/function.isset.php
empty() değişken belirli değerlere ayarlandığında true değerini döndürebilir:
http://us.php.net/manual/en/function.empty.php
Bunu göstermek için, $ the_var atanmamış, 0 ve 1 olarak aşağıdaki kodu deneyin.
<?php
#$the_var = 0;
if (isset($the_var)) {
echo "set";
} else {
echo "not set";
}
echo "\n";
if (empty($the_var)) {
echo "empty";
} else {
echo "not empty";
}
?>
Kabul edilen cevap doğru değil.
isset () ,! empty () ile eşdeğer DEĞİLDİR .
Bu rotadan aşağı inerseniz bazı hoş olmayan ve hata ayıklaması zor hatalar oluşturacaksınız. örneğin bu kodu çalıştırmayı deneyin:
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
isseteşdeğer değildir !empty.
$a = 0;
if (isset($a)) { //$a is set because it has some value ,eg:0
echo '$a has value';
}
if (!empty($a)) { //$a is empty because it has value 0
echo '$a is not empty';
} else {
echo '$a is empty';
}
Boş sadece kontrol başvurulan değişken / dizi bir php doc (boş) kontrol ederseniz bu şeylerin emtpy olarak kabul görür
* "" (an empty string) * 0 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
isset php doc'de (isset) de bulunabilen değişken isset olup olmadığını kontrol edin.
Bu gerekli değil.
Değişken yoksa uyarı üretilmez. Bunun anlamı empty () aslında! İsset ($ var) || $ var == yanlış.
isset($vars[1]) AND !empty($vars[1])eşittir !empty($vars[1]).
Ampirik olarak göstermek için basit bir kod hazırladım.
Son satır tanımsız değişkendir.
+-----------+---------+---------+----------+---------------------+
| Var value | empty() | isset() | !empty() | isset() && !empty() |
+-----------+---------+---------+----------+---------------------+
| '' | true | true | false | false |
| ' ' | false | true | true | true |
| false | true | true | false | false |
| true | false | true | true | true |
| array () | true | true | false | false |
| NULL | true | false | false | false |
| '0' | true | true | false | false |
| 0 | true | true | false | false |
| 0.0 | true | true | false | false |
| undefined | true | false | false | false |
+-----------+---------+---------+----------+---------------------+
Ve kod
$var1 = "";
$var2 = " ";
$var3 = FALSE;
$var4 = TRUE;
$var5 = array();
$var6 = null;
$var7 = "0";
$var8 = 0;
$var9 = 0.0;
function compare($var)
{
print(var_export($var, true) . "|" .
var_export(empty($var), true) . "|" .
var_export(isset($var), true) . "|" .
var_export(!empty($var), true) . "|" .
var_export(isset($var) && !empty($var), true) . "\n");
}
for ($i = 1; $i <= 9; $i++) {
$var = 'var' . $i;
compare($$var);
}
@print(var_export($var10, true) . "|" .
var_export(empty($var10), true) . "|" .
var_export(isset($var10), true) . "|" .
var_export(!empty($var10), true) . "|" .
var_export(isset($var10) && !empty($var10), true) . "\n");
Tanımsız değişken işlev dışında değerlendirilmelidir, çünkü işlevin kendisi kapsamın kendisinde geçici değişken oluşturur.
"Boş": sadece değişkenler üzerinde çalışır. Boş, farklı değişken türleri için farklı anlamlara gelebilir (el kitabına bakın: http://php.net/manual/en/function.empty.php ).
"isset": değişkenin var olup olmadığını kontrol eder ve gerçek bir NULL veya false değeri kontrol eder. "Unset" çağırılarak ayarlanabilir. Bir kez daha, kılavuzu kontrol edin.
İkisinden birinin kullanımı, kullandığınız değişken türüne bağlıdır.
Her ikisini de kontrol etmek daha güvenlidir, çünkü öncelikle değişkenin var olup olmadığını ve gerçekten NULL veya boş olmadığını kontrol ediyorsunuz.
aşağıdaki gibi gönder düğmesi ile eklemek / düzenlemek için aynı sayfayı kullanırsak
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
o zaman kullanmamalıyız
isset($_POST['edit_id'])
bcoz edit_id, sayfa ekle veya düzenle olsun her zaman ayarlanır, bunun yerine aşağıdaki kontrolü kullanmalıyız
!empty($_POST['edit_id'])
empty()işleve başvurarak :İade FALSEdurumunda varboş olmayan ve sıfır olmayan bir değeri vardır.
Bunu bilmek iyi bir şey. Bir başka deyişle, her şeyi de NULL, hiç 0“ile” dönecektir TRUEkullanırken empty()işlevi.
isset()işlevin döndürdüğünün açıklaması :TRUEVarsa döndürür var; FALSEaksi takdirde.
Başka bir deyişle, sadece mevcut olmayan değişkenler (veya kesinlikle sahip değişkenler olarak NULLdeğerler) dönecektir FALSEüzerine isset()fonksiyonu. Herhangi bir değer türüne sahip olan tüm değişkenler ( 0boş metin dizesi vb TRUE.) Geri döner .