Eğer dikkat ettiyseniz bazı yazılımcılar bizim if($deger==7) olarak kullandığımız kodun tersini kullanıyorlar. Acaba merak ettiniz mi ne farkı var diye?
Öncelikle bu tarz “if(7==$deger) ya da if($deger==7)” bu yazımın kaynağı C dilidir. = işareti ile atama, == işaretleri ile de eşit mi karşılaştırması yapılır.
Yazılımcılar özellikle çok satırlı kodlar yazarken dalgınlıkla == işaretleri yerin = işareti kullanabiliyorlar. Bu da küçük gibi görünen ama büyük bir mantık hatasına sebep olabiliyor. Bunları örnek üzerinde inceleyelim.
<php $menu = "Anasayfa | Hakkımızda | İletişim"; // menu isimli bir değişkenimizin içinde bir menü bloğu yer alsın. $deger = 5; // deger isimli değişkenimize 5 değerini atadık. if($deger == 7) { echo $menu; } /* bu if içerisine yazdığımız şart komutu eğer $deger değişkeninin değeri 7'ye eşitse ekrana menu değişkenindeki değerin çıktısını almayı ifade eder. Fakat $deger değişkeninin değeri 7'e eşit olmadığı için ekrana bir çıktı alınmayacak. Eğer $deger değişkeninin değeri de 7 olsaydı o zaman "Anasayfa | Hakkımızda | İletişim" çıktısını alabilecektik. */ ?>
Yukarıdaki kod parçasında, normalde kullandığımız yazım biçimiyle karşılaştırma yaparak ekrana çıktı ürettirmeye çalıştık. Peki $değer == 7 yerine yanlışlıkla $değer = 7 yazsaydık ne olurdu. Görelim..
<php $menu = "Anasayfa | Hakkımızda | İletişim"; // menu isimli bir değişkenimizin içinde bir menü bloğu yer alsın. $deger = 5; // deger isimli değişkenimize 5 değerini atadık. if($deger = 7) { echo $menu; } /* bu if içerisine yazdığımız şart komutu eğer $deger değişkeninin değeri 7'ye eşitse ekrana menu değişkenindeki değerin çıktısını almayı ifade eder. Fakat == işareti yerine yanlışlıkla = işareti kullandık. Normalde $deger 7'e eşit olmadığı için ekrana bir çıktı gelmemesi gerekir. Ama bu kodun çıktısı : Anasayfa | Hakkımızda | İletişim */ ?>
Bu demek oluyor ki $deger ile 7 eşit olmasa bile orada bir atama işlemi başarılı bir şekilde gerçekleştiği için if şartı yerine getirildiğini zannederek ekrana çıktıyı gönderiyor. Bu da büyük bir mantık hatasına sebep oluyor. Bu tür bir mantık hatası ile karşılaşmamak için karşılaştırma ifadesini ters kullanırsak böyle bir mantık hatasın kurtulmuş oluyoruz.
if($deger==7) yerine if(7==$deger)
<php $menu = "Anasayfa | Hakkımızda | İletişim"; // menu isimli bir değişkenimizin içinde bir menü bloğu yer alsın. $deger = 5; // deger isimli değişkenimize 5 değerini atadık. if(7 == $deger) { echo $menu; } /* bu if içerisine yazdığımız şart komutu eğer $deger değişkeninin değeri 7'ye eşitse ekrana menu değişkenindeki değerin çıktısını almayı ifade eder. Fakat $deger değişkeninin değeri 7'e eşit olmadığı için ekrana bir çıktı alınmayacak. Eğer $deger değişkeninin değeri de 7 olsaydı o zaman "Anasayfa | Hakkımızda | İletişim" çıktısını alabilecektik. */ ?>
if($deger=7) yerine if(7=$deger)
<php $menu = "Anasayfa | Hakkımızda | İletişim"; // menu isimli bir değişkenimizin içinde bir menü bloğu yer alsın. $deger = 5; // deger isimli değişkenimize 5 değerini atadık. if(7 = $deger) { echo $menu; } /* bu if içerisine yazdığımız şart komutu eğer $deger değişkeninin değeri 7'ye eşitse ekrana menu değişkenindeki değerin çıktısını almayı ifade eder. Fakat == işareti yerine yanlışlıkla = işareti kullandık. */ ?>
Bu ifade “if(7 = $deger)” yanlış kullanıldığı için kodu çalıştırdığımızda bir hata alacağız. Bu sayede hata satırına giderek kodumuzu hemen düzeltebileceğiz.
yani düz yazdığımızda yanlış yazsak bile ekrana yazdırıyorken ters ve yanlış yazdığımızda hata veriyor. Doğrumu anlamışım 🙂
Serinin devamı gelecek mi ?