Tweet

PHP | Döngüler

PHP'de de programın akış denetimi şartlar ve döngülerle sağlanır. PHP de döngüler tıpkı C de ve diğer C tabanlı dillerde olduğu gibi işler. Belirli şartlar sağlandığında tekrar etmesini istediğimz olayları döngü bloklarına yazarız. Değişik döngü komut ve kullanımları mevcuttur. Simdi bu farklı komut ve kullanımları tanıyalım[...]

while döngüsü
<P align=justify>Bir değişkenin içeriğinin bir şarta uyması yada uymaması durumunda döngü çalışır. Burada en önemli nokta, döngünün çalışması sırasında değişkenin içeriğinin veya şartun değişmesinin sağlanmasıdır. Aksi taktirde döngü, sonsuz döngüye girer ve büyük olasılıkla çöker. while döngüsü şöyle yazılır:
CODE:
<?
while (şart)

{

Şart doğru ise yapılacak işlere ilişkin komutlar

} ?>
Bu yöntemin yaygın kullanıldığı alan, bir sayaçla yaptırılan işlerdir. Aşağıdaki programı while.php adılma kaydedip, çalışrırsanız, PHP, Tarayıcı'ın yazı türü boyutunu 1'den 7'ye kadar büyüterek, aynı metni yazdıracaktır:

CODE:
<?php
$sayac = 1;
while ( $sayac <= 7 ) {
print ("<font size= $sayac >"); print ("
<P><B>Yazı boyutu$sayac</B></P>"); print ("</FONT>"); $sayac++; }?>
Programımız, while döngüsü içindeki iken, sonsuz döngüden kurtulabilmek için, yazıyı yazdırdıktan sonra, $sayac değişkenini bir arttırıyor. Aksi taktirde, değişken hiç bir zaman while döngüsünün beklediği şarta kavuşarak 7'ye eşit hale gelemeyecektir. (Programı, sondaki "$sayac ++;" satırını kaldırarak denerseniz, zararsız bir sonsuz döngünün ne olduğunu görebilirsiniz!)

while döngüsünün aradığı şartın yerine gelmesi, her zaman burada olduğu gibi, tabir yerinde ise "elle" yapılmaz; döngünün icra ettiği komutlar veya fonksiyonlar şartı içeren değişkeni değiştirebilirler. Sözgelimi elektronik ticaret sitemizde Web ziyaretçimizin while içinde yaptığı alışverişin tutarını şart olarak kullanabiliriz ve bu şartu içeren değişken alışveriş ile değişebilir

do..while
while döngüsü farkettiğiniz gibi, ileri sürdüğümüz şartı, iyi yapmadan önce sınar; ve bu şart ortadan kalkmamışsa (yani henüz doğru/true ise) yapacağı işi yapar; başka bir deyişle while döngüsünün yapacağı iş hiç yapılmayabilir. Fakat sınamanın iş yapıldıktan sonra yerine getirildiği bir şekli de vardır: do..while.. Bu döngü ise şöyle yazılır:CODE:
<? do {

Şart doğru ise yapılacak işlere ilişkin komutlar

}
while (şart);

?>
Burada gördüğünüz gibi do..while döngüsü en az bir kere çalışır çünkü şartın sınanması yapılacak işe ilişkin komutlardan sonra gelmektedir. Bu döngünün aradığı şartın döngünün yaptığı işlerin sonucu veya kod bölümünde bizim tarafımızdan gerçekleştirilmesi için gerekli komutların bulunmasına dikkat etmelisiniz. Yoksa, bu döngü de sosuz döngüye girer! Yukarıda örneği, bu yöntemle yazalım
CODE:
<?php
$sayac = 1;
do {
print ("<font size= $sayac >"); print ("
<P><B>Yazı boyutu$sayac</B></P>");
print ("</FONT>"); $sayac ++;
}
while ( $sayac <= 7 ); ?>
*Bu döngüyü yazarken, while satırının sorunda noktalı virgül bulunduğuna dikkat edin.

For Döngüsü
PHP'de Web programlarımız, döngünün belirli bir sayıda olmasını ve mesela bu sayının bizim istediğimiz basamaklarda artmasını gerektiriyorsa, döngüyü for deyimiyle kurabiliriz. Ayrıca for deyimi sayaç gibi şartın yerine gelmesini sağlayacak arttırma veya eksiltme işlemlerini kendisi yapacağı için, sonsuz döngüye girme tehlikesi de hemen hemen yoktur. Bu döngü şöyle yazılır:CODE:
<?

for ( $yeni_degisken atama ; şart ; artış basaması ) {
Şart doğru ise yapılacak işlere ilişkin komutlar
}

?>
For deyiminin ilk ögesi, döngü sayacı olarak kullanılacak bir değişken oluşkturulması ve buna değer atanmasına ilişkindir; sonra bir noktalı vrigül ile bu sayacın sınırı olan şart belirtilir. Yine noktalı virgül ile ayırarak, sayaç değişkeninin artış hızı verilir. Bunu da yine yukarıdaki örnekle gösterelim:
CODE:
<?php
for ($sayac = 1; $sayac <= 7 ; $sayac++ ) {
print ("<font size= $sayac >"); print ("
<P><B>Yazı boyutu$sayac</B></P>"); print ("</FONT>"); } ?>
Buradaki kod, while ve do..while'a göre çok daha kısa; ve while döngüsü sayacı arttırmayı sağlayan satır unutulsa bile çalışacağı halde, for döngüsü unsurlara ilişkin noktalı virgüller eksik olursa çalışmayacak ve bize böylece sonsuz döngü tehlikesini hatırlatmış olacaktır. for döngüsü kendi sayacını verdiğiniz şartı karşılayıncaya kendisi arttıracak, yani buradaki örneği göre $sayaç değişkeni 7 oluncaya kadar çalışacak ve şart karşılandığı anda, sona erecektir.

PHP'nin programcıya çok kolaylık sağlayan bir diğer döngüsü, foreach döngüsüdür. Ancak bir değişkenin bütün elemanlarını tekrar sayısında esas alan bu döngünün çalışma ilkelerini görebilmek için dizi değişken kavramını ele almış olmamız gerekiyor. Şimdilik bu döngünün varlığını bir kenara yazıp, dizi değişkenlere kadar, unutabilirsiniz.

Döngüyü sona erdirmek için: break
Programımızın akışı, bazen döngünün durdurulmasını gerektirir. Örneğin, sayaç değişkenini ziyaretçinin vermesi gerektiği ve vermediği durumda, döngü çalışmaz. Programın gerektirdiği böyle bir sebeple döngüyü break komutuyla durduruz. Sözgelimi aşağıdaki kodda kullandığımız $tekrar değişkenini değerini ziyaretçiden form yoluyla aldığımızı varsayalım:
CODE:
<?php
$tekrar = 10 :
for ($sayac = 1; $sayac <= $tekrar ; $sayac++ ) {
if ( $tekrar <= 0 )
break;
print ("<font size= $sayac >"); print ("<B>
<P>Yazı boyutu$sayac</B></P>"); print ("</FONT>"); } ?>
Bu kod parçasını, bir sayfa kodunun içine yerleştirir ve önce bu şekliyle, daha sonra $tekrar= 0 yazarak sınarsanız, break komutunun işe yaradığını göreceksiniz. Ayrıca buradaki if deyiminin süslü parantez olmadan yazıldığına dikkat edin.

Döngüyü sürdürmek için: continue
break ifadesinin döngüyü tamamen durdurduğunu farkettiniz mi? Oysa programımızın akışı, kimi zaman da döngünün sadece belirli bir durumda kendisinden beklenen işi yapmamakla birlikte böyle tümüyle kesilmesini de gerektirmez. Yine yukarıdaki örneğe dönersek, sayaç değişkenini ziyaretçinin vermesi gerektiği ve vermediği durumda, döngünün tümüyle kesilmesini değil de, sadece sayacı gösteren $sayac değişkeninin sıfırdan büyük bir değere ulaşlmasını beklememiz yerinde olabilir. Bu devamlılığı continue komutuyla sağlarız:

Yine bu örnekte kullandığımız $sayac değişkeninin değerini ziyaretçiden form yoluyla aldığımızı varsayarak, kodu şöyle değiştirebiliriz.
CODE:
<?php
$sayac = -5 :
for (; $sayac <= 7 ; $sayac++ ) {
if ( $sayac <= 0 )
continue;
print ("<font size= $sayac >"); print ("<B>
<P>Yazı boyutu$sayac</B></P>"); print ("</FONT>"); } ?>


Bu durumda PHP, continue komutunu gördüğü anda for döngüsünün geri kalan kısmını çalıştırmak etmek yerine başa dönecek ve döngüyü yeniden çalışmaya başlayacaktır. Döngünün ilk satırınnda kod parçasını, bir sayfa kodunun içine yerleştirir ve önce bu şekliyle, daha sonra $sayac= 1 yazarak sınarsanız, continue komutunun programı sayaç değişkeninin değeri 1 oluncaya kadar durdurduğunu ama bu sırada for döngüsünün devam ettiğini göreceksiniz.


Dia
okanatabag@gmail.com
27 Ekim 2005 12:05

İlgili Olabilecek Makaleler


Yorumlar (2)





Bilrosman
6 Nisan 2009 11:09
Bilgiler için tşk ederim...


kelebekim
7 Aralik 2009 15:42
tesekkurler....

Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg