Bu değişken ayarlanmış olup olmadığını görmek için bir ok test mi

0 Cevap php

Dün, (zaman benim için bilinmeyen) birkaç dahil bir soruya çok kötü kod örnekleri için answer yayınlanmıştır. O zamandan beri, beni böyle kod mümkün olduğunu düşünmek için izin PHP benim temel bilgi bakarak oldum. Bu benim için bir cevap bulmak için görünmüyor olabilir bir soruya getiriyor:

Ben bir değişken şey ayarlanmış olup olmadığını kontrol etmek istiyorsanız, not isset() veya başka bir yardımcı işlevi kullanmak için geçerli bir uygulamadır? Burada bir "örneğin" var:

if($not_set){
    //do something
} else {
    //do something else
}

Yerine ...

if(isset($not_set)){
    //do something
} else {
    //do something else
}

Değişkenin adını itibaren, bu değişken ayarlı olmadığını görebilirsiniz. Bu nedenle şartlı yanlış olur ve else bölümü çalışır. Şimdiye kadar ben bu uygulamayı kullanıyorum, ama mesajların ardından dün, ben şimdi bu yanlış olduğunu bir ipucu var.

Ben yukarıda isset() fonksiyonu dışında bırakmak için bir ok bir uygulama olacağını düşündüm neden burada. PHP manuel:

The if construct is one of the most important features of many languages, PHP included. It allows for conditional execution of code fragments. PHP features an if structure that is similar to that of C:

if (ifade) deyim

As described in the section about expressions, expression is evaluated to its Boolean value. If expression evaluates to TRUE, PHP will execute statement, and if it evaluates to FALSE - it'll ignore it. More information about what values evaluate to FALSE can be found in the 'Converting to boolean' section.

Ve 'boolean bölümüne dönüştürme' dan:

When converting to boolean , the following values are considered FALSE:

... * the special type NULL (including unset variables)

Bu kötü bir uygulama ise neden manuel unset değişkenlerin dahil olduğu devlet kendi yolumdan gitmek istiyorum? Bu unset varsa, bu NULL dönüştürülür alır ve dolayısıyla koşullu tarafından doğru değerlendirilir. isset() aynı sonucu bulacaksınız kullanarak, ama bunu yapmak için ekstra döngüleri alacaktır.

Birisi neden bütün bu zaman yanlış oldum ve olmadığı konusunda beni aydınlatabilir misiniz? (Ve belki, ne kadar kötü?)

Teşekkürler, SO, sen hayal kırıklığına asla.

Düzenleme: Teşekkürler herkese (ve hızlı). O): Ben dürüst tüm cevaplar kadar büyük ve cevap almak için hangi bilmiyorum ... senin aldı değilse, ben olacak hala upvote düşünüyorum

0 Cevap