Echo boş ($ yer) 1 yazdıran bile neden idam değil gelen ifadedir

3 Cevap php
echo empty($location);
switch($location){
    case (empty($location)):
expression 1;
    break;
    case ($location%10000==0):
expression 2;
    break;
    case ($location%100==0):
expression 3;
    break;
    default:
    expression 4;
    break;

}

Ben ($ yer) boş echo neden ifadesi 1 idam değil, bu 1 yazdırır?

3 Cevap

Düzgün switch ifadeleri kullanıyor değiliz. Çalıştıkları yolu ilk switch değerine karşı her durumda değer karşılaştırmaktır.

Senin durumunda, en $location = null gibi yapalım;

echo empty($location);    // true: null is considered empty.

switch ($location) {
    case empty($location) :    // this performs the check:
                               // $location == empty($location)
                               //      null == true ==> false

o çalışmaz yüzden bu yüzden ..

Ben bu durumda if .. else yapışmasını tavsiye ederim.

empty fonksiyonu 1 veya 0 http://uk3.php.net/empty bir Boole değeri döndürür

switch / case ifadeleri değişken belli bir değeri tutan olup olmadığını kontrol edin ve buna bağlı bir ifadeyi yürütmek Oysa

Eğer durumda, expression 1 idam edilmelidir değeri $location==1 (yazdığınız zaman etkili olduğunu sordu switch($location)) ise,

Yani yukarıdaki kod mantığı:

if $location==1, execute expression 1
if $location%10000==0, execute expression 2
etc. etc.

değeridir $location==1?

A switch deyimi bir if/else ifadesi olarak aynı değildir. Switch ifadeleri belirli değerleri için arıyoruz. Verilen bir case deyiminde belirtilen değer bulursa, o case deyimi sonra kod çalışır.

Aşağıdaki kodu:

switch($x)
    case 1:
        // some stuff
        break;
    case 2:
        // some other stuff
        break;
    default:
        // some more stuff
        break;

Bu kodun eşdeğerdir:

if($x == 1){
    // some stuff
}
elseif($x == 2){
    // some other stuff
}
else{
    // some more stuff
}

Temel olarak, switch deyimleri olanakları bir grup karşı tek bir değişkenin eşitlik için kontrol ediyoruz if/elseif/else blokları için kısayollar vardır.

empty() 0 veya 1 döndürür yana veya 0 ($location boşsa) $location if (1 ise, ilk case çalışacak $location) boş değildir. Eğer aşağıdaki yazdık neredeyse gibi:

elseif($location == empty($location)){ ...

Mantıklı? Bunun yerine switch deyimi kullanarak, muhtemelen istediğim şu:

if(empty($location)){
    // ...
}
elseif($location % 10000 == 0){
    // ...
}
// ...