for

(PHP 4, PHP 5, PHP 7)

for döngüsü, PHP'deki en karmaşık döngü yapısıdır. C'deki karşılığıyla aynı biçimde çalışır. for döngüsünün sözdimi:

for (ifade1; ifade2; ifade3)
    deyim

İlk ifade (ifade1) döngünün en başında bir kereliğine koşulsuz olarak çalıştırılır.

Her yinelemenin başında ifade2 yeniden değerlendirilir. Bu ifadeden TRUE sonucu elde edilirse, döngüye devam edilir ve döngünün etki alanındaki deyimler çalıştırılır. Bu ifadeden FALSE sonucu elde edildiğinde etki alanındaki deyimler çalıştırılmaksızın döngü sonlandırılır.

ifade3 ise her yinelemenin sonunda çalıştırılır.

Bu ifadelerin herbirini boş bırakmak da mümkündür. ifade2nin boş olması, döngünün sonsuza kadar çalıştırılacağı anlamına gelir (PHP, C'deki gibi bu durumu TRUE olarak değerlendirir). Döngülerden genellikle bir şarta bağlı olarak break deyimi ile çıkmak isteyeceğiniz düşünüldüğünde, bu durum düşündüğünüz kadar kullanışsız değildir.

Aşağıdaki örnekleri ele alalım. Hepsi de 1'den 10'a kadar sayıları görüntülemektedir:

<?php
/* örnek 1 */

for ($i 1$i <= 10$i++) {
    echo 
$i;
}

/* örnek 2 */

for ($i 1; ; $i++) {
    if (
$i 10) {
        break;
    }
    echo 
$i;
}

/* örnek 3 */

$i 1;
for (; ; ) {
    if (
$i 10) {
        break;
    }
    echo 
$i;
    
$i++;
}

/* örnek 4 */

for ($i 1$j 0$i <= 10$j += $i, print $i$i++);
?>

Elbette, kullandığımız ilk örnek en güzel örnek olarak gözükmektedir (ya da belki dördüncü örnek), ancak birçok durumda for döngüsü içerisinde boş ifadeler kullanmayı oldukça kullanışlı bulabilirsiniz.

PHP, iki noktalı sözdizimini for döngüleri için de desteklemektedir.

for (ifade1; ifade2; ifade3):
    deyimler
    ...
endfor;

Çoğu kullanıcının yaptığı gibi diziler üzerindeki yinelemeleri şöyle yapabilirsiniz:

<?php
/*
 * Diziye baştan bir kaç veri atıp daha sonra
 * döngü içinde verilerde değişiklik yapacağız.
 */
$bizimkiler = Array(
    Array(
'isim' => 'Ali''tuz' => 856412),
    Array(
'isim' => 'Veli''tuz' => 215863)
);

for(
$i 0$i count($bizimkiler); ++$i)
{
    
$bizimkiler[$i]['tuz'] = mt_rand(000000999999);
}
?>

Her yinelemede dizinin boyutları yeniden hesaplandığından kod yavaş çalışabilir. Örnekte boyut değişmediğinden count() işlevini defalarca çağırmak yerine dizi boyutunu bir değişkene atıp ifadede bu değişken kullanılarak kod en iyilenebilir:

<?php
$bizimkiler 
= Array(
    Array(
'isim' => 'Ali''tuz' => 856412),
    Array(
'isim' => 'Veli''tuz' => 215863)
);

for(
$i 0$size count($bizimkiler); $i $size; ++$i)
{
    
$bizimkiler[$i]['salt'] = mt_rand(000000999999);
}
?>