Arasında herhangi bir hız farkı var mı
if (isset($_POST['var']))
veya
if ($_POST['var'])
And which is better veya are they the same?
Onlar aynı değildir. Bir kavramsal dizi düşünün:
$arr = array(
'a' => false,
'b' => 0,
'c' => '',
'd' => array(),
'e' => null,
'f' => 0.0,
);
$x
bu anahtarlar ('a' için 'f') ve bu gibi işleri yok anahtar 'g' biridir varsayarsak:
$arr[$x]
false
, bir g için tüm şifreler içindir;isset($arr[$x])
true
şifreler a, b, c, d ve f, ancak false
, e ve g içindir; vearray_key_exists($x, $arr)
true
a ila f, false
g seyahati şifreler içindir.Ben booleans için PHP's type juggling, özellikle dönüşüm bakmak öneririz.
Son olarak, ne yaptığınızı denir micro-optimization. Hangisi tarafından onlardan biri daha hızlı olarak algılanmaktadır hangi seçim asla. Daha hızlı, hangisi o never, size güvenilir (Ben herhangi bir istatistiksel olarak anlamlı düzeyde olabilir emin değilim) daha hızlı olduğunu belirlemek olsa bile bir faktör olması gerektiğini fark çok önemsizdir.
Eğer değişkenin değeri test sırasında isset
, değişken bir değere sahip olduğunu test eder.
Örneğin:
// $_POST['var'] == 'false' (the string false)
if (isset($_POST['var'])) {
// Will enter this if
}
if ($_POST['var']) {
// Won't enter this one
}
Büyük problem iki ifadelerin denklik Denetlediğiniz değişkenin değerine bağlıdır, yani varsayımlar yapamazsınız olmasıdır.
Sıkı PHP, bir değişken kullanmadan önce ayarlanmış olup olmadığını kontrol etmeniz gerekir.
error_reporting(E_ALL | E_STRICT);
Burada ne yapıyorsun
if ($ var)
Değer ayarlanırsa kontrol etmiyor. Yani Sıkı PHP tanımsız değişkenler için bir uyarı üretecektir. (Bu diziler ile çok olur)
Ayrıca sıkı PHP (sadece bir Bilginize sizin veya başkaları için), bir işlevi argüman olarak bir unset var kullanarak bir uyarı atmak ve bu önlemek için fonksiyon içinde isset () kontrol edemez.