PHP Foreach Döngüsü Nedir? Kullanımı ve Örnek Uygulamalar
PHP programlama dilinde döngüler, belirli işlemleri tekrar tekrar gerçekleştirmek için kullanılır. Özellikle diziler içerisinde bulunan verilerin sırasıyla işlenmesi gerektiğinde foreach döngüsü oldukça kullanışlıdır.
PHP'de for, while ve do-while döngülerinin yanı sıra diziler ve dolaşılabilir veri yapıları üzerinde işlem yapmak için foreach döngüsü de kullanılmaktadır.
1. PHP FOREACH DÖNGÜSÜ NEDİR?
Foreach, PHP'de bir dizinin elemanlarını sırasıyla işlemek için kullanılan döngü yapısıdır. Foreach kelimesi İngilizcede "her biri için" anlamına gelir.
Örneğin, içerisinde beş öğrencinin adı bulunan bir diziyi düşünelim. Bu öğrencilerin isimlerini ekrana yazdırmak için her bir elemana ayrı ayrı ulaşmamız gerekir.
Foreach döngüsü sayesinde dizinin elemanlarını tek tek seçmek zorunda kalmadan tüm elemanlar üzerinde işlem gerçekleştirebiliriz.
2. PHP FOREACH DÖNGÜSÜNÜN KULLANIMI
Foreach döngüsünün en temel kullanım şekli aşağıdaki gibidir:
<?php
foreach ($dizi as $deger) {
// Yapılacak işlemler
}
?>
Burada kullanılan ifadelerin görevleri şunlardır:
- $dizi: Elemanları üzerinde işlem yapılacak dizidir.
- as: Dizinin elemanlarını sırayla bir değişkene aktarır.
- $deger: Her döngü adımında dizinin sıradaki elemanını tutar.
Foreach döngüsü, dizinin elemanları bitene kadar çalışmaya devam eder.
FOREACH DÖNGÜSÜNÜN AVANTAJLARI
- Dizilerin elemanlarını kolayca listelemeyi sağlar.
- Dizinin eleman sayısını önceden bilmek gerekmez.
- İndis numaralarını kullanmadan elemanlara ulaşılabilir.
- İlişkisel dizilerin anahtar ve değerleri birlikte işlenebilir.
- HTML tabloları ve listeleri oluştururken kullanılabilir.
3. PHP FOREACH DÖNGÜSÜ ÖRNEK UYGULAMALAR
ÖRNEK 1: DİZİ ELEMANLARINI EKRANA YAZDIRMA
İçerisinde programlama dillerinin bulunduğu bir dizi oluşturalım ve tüm elemanları foreach döngüsüyle ekrana yazdıralım.
<?php
$diller = array("PHP", "JavaScript", "Python", "C#");
foreach ($diller as $dil) {
echo $dil . "<br>";
}
?>
Ekran Çıktısı:
PHP
JavaScript
Python
C#
Bu örnekte $diller dizisindeki her eleman sırayla $dil değişkenine aktarılır ve ekrana yazdırılır. Diziye yeni bir programlama dili eklendiğinde foreach döngüsü bu elemanı da otomatik olarak listeler.
ÖRNEK 2: DİZİDEKİ SAYILARIN TOPLAMINI HESAPLAMA
Bir dizide bulunan sayıların toplamını foreach döngüsü kullanarak hesaplayalım.
<?php
$sayilar = array(10, 20, 30, 40, 50);
$toplam = 0;
foreach ($sayilar as $sayi) {
$toplam += $sayi;
}
echo "Sayıların toplamı: " . $toplam;
?>
Bu uygulamada $toplam değişkeni başlangıçta sıfır olarak tanımlanmıştır.
Ekran Çıktısı: Sayıların toplamı: 150
Foreach döngüsü her çalıştığında dizideki sıradaki sayı $toplam değişkenine eklenmektedir.
Not: += operatörü, bir değişkenin mevcut değerine yeni bir değer eklemek için kullanılır.
ÖRNEK 3: İLİŞKİSEL DİZİLERDE FOREACH KULLANIMI
PHP'de dizilerin elemanlarına yalnızca sayısal indislerle değil, metinsel anahtarlarla da ulaşılabilir. Bu tür dizilere ilişkisel dizi adı verilir.
Foreach döngüsüyle ilişkisel dizilerin hem anahtarlarına hem de değerlerine ulaşabiliriz.
Genel kullanım şekli:
foreach ($dizi as $anahtar => $deger) {
// Yapılacak işlemler
}
Şimdi bir öğrencinin bilgilerini ilişkisel dizi içerisinde saklayalım.
<?php
$ogrenci = array(
"Ad" => "Ahmet",
"Soyad" => "Yılmaz",
"Sinif" => "11-A",
"Bolum" => "Bilişim Teknolojileri"
);
foreach ($ogrenci as $anahtar => $deger) {
echo $anahtar . ": " . $deger . "<br>";
}
?>
Ekran Çıktısı:
Ad: Ahmet
Soyad: Yılmaz
Sinif: 11-A
Bolum: Bilişim Teknolojileri
Bu örnekte $anahtar değişkeni dizinin anahtarını, $deger değişkeni ise ilgili anahtarın karşılığındaki veriyi tutmaktadır.
ÖRNEK 4: ÇOK BOYUTLU DİZİLERDE FOREACH KULLANIMI
Çok boyutlu diziler, içerisinde başka diziler bulunan veri yapılarıdır.
Örneğin bir sınıftaki öğrencilerin adlarını, sınıflarını ve notlarını aynı dizi içerisinde saklayabiliriz.
<?php
$ogrenciler = array(
array(
"ad" => "Ahmet",
"sinif" => "11-A",
"not" => 85
),
array(
"ad" => "Ayşe",
"sinif" => "11-B",
"not" => 92
),
array(
"ad" => "Mehmet",
"sinif" => "11-A",
"not" => 70
)
);
foreach ($ogrenciler as $ogrenci) {
echo "Ad: " . $ogrenci["ad"] . "<br>";
echo "Sınıf: " . $ogrenci["sinif"] . "<br>";
echo "Not: " . $ogrenci["not"] . "<br>";
echo "<hr>";
}
?>
Ekran Çıktısı:
Ad: Ahmet
Sınıf: 11-A
Not: 85
-------------------
Ad: Ayşe
Sınıf: 11-B
Not: 92
-------------------
Ad: Mehmet
Sınıf: 11-A
Not: 70
Bu uygulamada dıştaki dizinin her elemanı ayrı bir öğrenciyi temsil etmektedir. Foreach döngüsü her adımda bir öğrencinin bilgilerini alarak ekrana yazdırmaktadır.
ÖRNEK 5: FOREACH İLE HTML TABLO OLUŞTURMA
Foreach döngüsünün en önemli kullanım alanlarından biri, dizilerde bulunan verileri HTML tabloları içerisinde listelemektir.
Örneğin bir mağazadaki ürünlerin adlarını, fiyatlarını ve stok miktarlarını tablo içerisinde gösterelim.
<?php
$urunler = array(
array(
"ad" => "Klavye",
"fiyat" => 350,
"stok" => 15
),
array(
"ad" => "Mouse",
"fiyat" => 200,
"stok" => 25
),
array(
"ad" => "Monitör",
"fiyat" => 4500,
"stok" => 8
),
array(
"ad" => "Kulaklık",
"fiyat" => 750,
"stok" => 12
)
);
echo "<table border='1' cellpadding='10' cellspacing='0'>";
echo "<tr>";
echo "<th>Ürün Adı</th>";
echo "<th>Fiyat</th>";
echo "<th>Stok</th>";
echo "</tr>";
foreach ($urunler as $urun) {
echo "<tr>";
echo "<td>" . $urun["ad"] . "</td>";
echo "<td>" . $urun["fiyat"] . " TL</td>";
echo "<td>" . $urun["stok"] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
Ekran Çıktısı:
| Ürün Adı |
Fiyat |
Stok |
| Klavye |
350 TL |
15 |
| Mouse |
200 TL |
25 |
| Monitör |
4500 TL |
8 |
| Kulaklık |
750 TL |
12 |
Bu örnekte ürün bilgileri çok boyutlu bir dizi içerisinde tutulmaktadır. Foreach döngüsü her ürün için yeni bir tablo satırı oluşturarak ürünün adını, fiyatını ve stok miktarını ilgili sütunlara yerleştirmektedir.
Bu yöntem, PHP ile veritabanından alınan kayıtların HTML tablolarında listelenmesinde de sıklıkla kullanılmaktadır.
4. PHP FOR VE FOREACH DÖNGÜLERİ ARASINDAKİ FARKLAR
PHP'de for ve foreach döngüleri tekrar eden işlemleri gerçekleştirmek için kullanılır. Ancak çalışma şekilleri birbirinden farklıdır.
| FOR DÖNGÜSÜ |
FOREACH DÖNGÜSÜ |
| Başlangıç, koşul ve artış ifadeleri kullanılır. |
Dizinin elemanları sırayla işlenir. |
| Sayısal tekrar işlemlerinde kullanışlıdır. |
Dizileri listelemek için kullanışlıdır. |
| İndis değişkeni kullanılabilir. |
Elemanlara doğrudan ulaşılabilir. |
| Tekrar sayısı koşula bağlıdır. |
Dolaşılan veri yapısındaki elemanlar işlenir. |
FOR DÖNGÜSÜ İLE DİZİ ELEMANLARINI YAZDIRMA
<?php
$renkler = array("Kırmızı", "Mavi", "Yeşil");
for ($i = 0; $i < count($renkler); $i++) {
echo $renkler[$i] . "<br>";
}
?>
FOREACH DÖNGÜSÜ İLE AYNI İŞLEM
<?php
$renkler = array("Kırmızı", "Mavi", "Yeşil");
foreach ($renkler as $renk) {
echo $renk . "<br>";
}
?>
Görüldüğü gibi foreach döngüsüyle aynı işlem daha kısa ve anlaşılır bir şekilde gerçekleştirilebilir.
5. FOREACH DÖNGÜSÜNDE BREAK VE CONTINUE KULLANIMI
Diğer döngülerde olduğu gibi foreach döngüsünde de break ve continue komutları kullanılabilir.
BREAK KOMUTU
Break komutu döngünün tamamen sonlandırılmasını sağlar.
<?php
$sayilar = array(10, 20, 30, 40, 50);
foreach ($sayilar as $sayi) {
if ($sayi == 30) {
break;
}
echo $sayi . "<br>";
}
?>
Ekran Çıktısı:
10
20
Döngü 30 değerine ulaştığında break komutu çalışır ve döngü sona erer.
CONTINUE KOMUTU
Continue komutu, döngünün mevcut adımını atlayarak bir sonraki adıma geçilmesini sağlar.
<?php
$sayilar = array(10, 20, 30, 40, 50);
foreach ($sayilar as $sayi) {
if ($sayi == 30) {
continue;
}
echo $sayi . "<br>";
}
?>
Ekran Çıktısı:
10
20
40
50
Bu örnekte 30 değeri atlanır ve diğer sayılar ekrana yazdırılmaya devam edilir.
6. FOREACH DÖNGÜSÜ KULLANIRKEN DİKKAT EDİLMESİ GEREKENLER
- Foreach döngüsü diziler ve dolaşılabilir nesneler üzerinde kullanılabilir.
- Dizinin eleman sayısını önceden bilmek gerekmez.
- İlişkisel dizilerde anahtar ve değer bilgilerine birlikte ulaşılabilir.
- Boş bir dizi üzerinde foreach kullanıldığında döngü gövdesi çalışmaz.
- İç içe diziler üzerinde işlem yapmak için birden fazla foreach döngüsü kullanılabilir.
- Foreach değişkenleri için anlamlı isimler seçilmesi kodun okunabilirliğini artırır.
7. ÖĞRENCİLER İÇİN UYGULAMA SORULARI
Uygulama 1: İçerisinde 10 farklı şehir adı bulunan bir dizi oluşturunuz. Foreach döngüsüyle şehirleri alt alta listeleyiniz.
Uygulama 2: Bir dizide bulunan 10 sayının toplamını ve aritmetik ortalamasını foreach döngüsüyle hesaplayınız.
Uygulama 3: Bir öğrencinin adını, soyadını, sınıfını ve okul numarasını ilişkisel dizi içerisinde saklayınız. Foreach döngüsüyle bilgileri ekrana yazdırınız.
Uygulama 4: Beş öğrencinin adını ve sınav notlarını çok boyutlu bir dizide saklayınız. Foreach döngüsü kullanarak notu 50 ve üzerinde olan öğrencileri listeleyiniz.
Uygulama 5: Bir kitapçıdaki kitapların adlarını, yazarlarını ve fiyatlarını çok boyutlu bir dizide saklayınız. Foreach döngüsü kullanarak kitapları HTML tablosu içerisinde listeleyiniz.
8. SONUÇ
Foreach döngüsü, PHP programlamada özellikle dizilerle çalışırken sıkça kullanılan önemli yapılardan biridir.
Basit dizilerden çok boyutlu dizilere kadar birçok veri yapısı foreach kullanılarak kolayca işlenebilir.
Öğrendiğiniz bilgileri pekiştirmek için örnek uygulamaları kendi bilgisayarınızda çalıştırabilir ve farklı diziler oluşturarak sonuçları inceleyebilirsiniz.