Bir çoğunuz if/else ve switch/case kullanmayı biliyordur. Ben bilenlerede, bilmeyenlerede bazı inceliklerini anlatmak istedim. rneğin if/else te süslü parantezleri kullanmaya bilirsiniz!! Madem kullanmayabiliriz neden yle yazıyorlar?Çünkü bazı durumlarda kullanmayabiliriz. rneğin bir değişkenimiz var ve tek mi çift mi diye yazdıracağız. İşte burada tek ifade için kullanmamıza gerek yok. İfade nedir? echo 'bu bir ifadedir';Php yada c tabanlı dillerde ifade sonuna ; koyarız. O ifade biter. echo 'ayrox';exit;yukarıda iki ifademiz var. Bir tanesi echo, diğeri exit. Sonlarına ; koyduk. Her ifadeden sonra noktalı virgül koyuyoruz. İf ve else lerden sonra süslü parantez kullanmazsak ilk ifade işleme konur. Hemen rnek yapalım; <?php$s=30;if($s % 2 0)echo $s.' sayısı çifttir';elseecho $s.' sayısı tektir';?> grdüğünüz gibi kod çalışacaktır. else if'tede aynı şey geçerli. Eğer kullanmazsak sonraki ilk ifade işlettirilecektir. Peki ikinci ifade ne olur? Deneyelim; <?php $s=31;if($s % 2 0)echo $s.' sayısı çifttir';echo 'bu if'e ait 2. ifade';elseecho $s.' sayısı tektir';echo 'bu else'e ait 2. ifade';?> Parse error: syntax error, unexpected T_ELSE in /var/www/lab/c. php on line 6 grdüğünüz gibi syntax error verdi. C'de byle yaparsanız ikinci ifadeler ana programa ait gibi grünür fakat phpde syntax error veriyor. İf-else ve Switch-case PerformansPhp performans, performansli ve profesyonelce kod yazmak/ yazılarında sanıyorum bahsetmiştim. Fakat tekrar bahsetmek istiyorum. Bilgisayarlar adım adım yol alır. Bunu bilirsek kodlarken daha güzel bir kodlama yapabiliriz. Switch-case ile tek sayfada işlemler yapalım. site.com/index. php?sayfa=anasayfasite.com/index. php?sayfa=hakkimizdasite.com/index. php?sayfa=dokumanlarolsun. Şimdi buna uygun switch-case yapısı yakalayalım. switch Bir çoğumuz byle yapıyor. Burada bilgisayar şyle işler; nce sayfa değişkeni hakkimizda mı diye bakar, değilse dokumanlar oda değilse default: kısmındaki kodlar gsterilir. Grdüğünüz gibi o değilse alttaki, o değilse alttaki. Bunu fazla switch-case 'e uyarlarsak ve performans istersek birazcık değişiklik yapmamız gerekiyor. Mantıken anasayfa en son bakılan yer olacaktır çünkü default. Ben AyroxBlog'ta bunu birazcık değiştirdim ve ilk bakılan yaptım. İlk bakılanı if/else ile yaptık. Alttaki kodumuzda onu greceksiniz. Fakat dikkatinizi çekmek istediğim nokta hakkimizda ve dokumanlar. Blogta dokumanlar yerine yazilar olur. Başka sitede başka birşey. Şimdi burada amaç en çok kullanılandan en az kullanılana doğru hiyerarşik yapı oluşturmaktır. Analytics'e ve benim istatistiklerime gre en çok kullanılandan en az kullanılana doğru sıralama yaparsak : index. php, bilgi , kosul , etiketler, yazi, kategori... şeklinde sıralanıyor. Fakat en başında index. php var. Yani default kısmımız en çok sıralanan. Şimdi if-else ile default: kısmını direkt başa alalım sonra switch-case ile yukarıdaki hiyerarşiye gre bir sıralama yapalım. Tabi benim birazcık farklı $seo vs.. yaptım AyroxBlog gibi seo konusunda anlattım. Ben kolay rnek olması için yukarıdakini değiştirip yazacağım; if(empty else{switch } Grdüğünüz gibi bilgisayar tek tek bilgi, kosul, etiketler, yazi, kategori olup olmadığına baktıktan sonra anasayfa'ya ait kodları vermek yerine, direkt anasayfa'ya ait kodları verecek. Tabi boş ise. Eğer $_GET değişkeni boş değilse sırasıyla bilgi, kosul, etiketler, yazi, kategori olup olmadığına bakacak. Eğer birisine uyuyorsa ondan sonrakileri atlayacaktır. İf Else Nasıl Olur?Eğer switch-case ile değil if-else ile yapsakta aynı şekilde olacaktı. Yani; if else if // tek tek diğerleri ve sonunda else; else Burada da tek tek $_GET bilgi, kosul vs.. diye bakacaktı. Bunda da hiyerarşik yapı kullanınız. En çok kullanılanı en başa, en az kullanılanı en sona atın. Bilgisayar'ın okuma şeklini biraz daha açalımŞimdi switch-case yada if/else kullanımında nceliğibilgikosuletiketleryazikategorişeklinde verirsek bilgisayar nce değişkenin eşitliğine bakacak. Şyle bakacak;$_GET değişkeni bilgi ise alttakileri grme;bilgi değilse, kosul'a bak, eğer kosul'sa alttakileri grme;kosul değilse etiketler'e bak, etiketler ise alttakileri grme;etiketler değilse yazi'ya bak, yazi ise alttakileri grme;yazi değilse kategori'ye bak, kategori ise alttakileri grme;kategori değilse altında default: yada else olacağında o kısmı al. Genel olarak mantığı bu. Bu şekilde tek tek gideceğinden fazla satırlı kodlarda azda olsa performans sağlayacağını düşünüyorum. Ufak bir bilgi : Eğer switch-case 'de break; kullanmazsak alttakileri olduğu gibi okur. <?php$s=1;switch ?> $s=2 ve $s=3 vererek sonuçları grebilirsiniz. Bu yüzden break; kısmını unutmayın. Tabi bazı yerlerde break kullanmamak işimize gelebilir. İf/else ve switch/case kullanımına ait bir sürü dküman bulabilirsiniz. Fakat ben birazcık daha farklı yanını gstermek istedim. Yeniler için veya bilmeyenler için farklı bir dküman olabilir. Tahribata zel : yazıyı kendi blogum ve başka sitede yayınladım. Dküman kendi dkümanımdır. Farklı olduğuna, bir çok kişinin bilmediği yanlar olduğunuda düşünüyorum. Bu yüzden tahribatta da yayınlayayım dedim. bloguma ait linkler var, onlarıda kaldırmayayım dedim yararlanan olursa buyurabilir. Sevgiler, saygılar :) anlamadığınız, takıldığınız yer varsa mesajları bekliyorum.

sağol hocam yeni başlayanlar için güzel ben bunları biliyorum ancak, dngülerde biraz problemim var onlarla ilgilide bir doc. hazırlarsan cok sevinirim. ..

tamam hoca onlar konusunda da yazayım. if/else ve switch/case lerde zellikle ncelik konusunda birşeyler bilmek isteidm. Bir çok kişinin switch-case ve if-else if-else kullanırken nceliğe dikkat etmediğini düşünüyorum. amacım performanstı, ayroxblog'ta uygulamaya çalışıyorum. Bu günlerde biraz karıştı ama yeniden yazacağım o zaman daha hızlı oalcak. Şimdi de yazarken yukarıdakilere dikkat ederek yazdım. Bir çok yerde de if ifade; olarak kullandım. Eğer tek satırsa süslü paranteze gerek yok. Neyse dngülerde de bir ara yazarım birşeyler

Faydası olabilir; http://tr. php. net/manual/tr/language. control-structures. php Umursamaz Tavrımın Hastası Olunuz.

eyw saolasın. AYrıyetten şyle birşeyde varmış bilmiyordum ; $s = 30; echo ($s % 2 0) ? "bu sayı çift" : "bu sayı çift değil";

yukarı atayım da son bi kez ne olur ne olmaz