İç İçe Döngülerle Yineleme
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 30 / 68.
2B dizilerle çalışırken genellikle her bir öğeyi işlemeniz gerekir; bu da her satırı ve ardından o satırın içindeki her sütunu ziyaret etmeyi gerektirir. İç içe döngüler bu noktada vazgeçilmez hâle gelir. Tüm ızgara yapısında sistematik olarak gezinmek için bir döngüyü diğerinin içinde kullanırsınız.
Dış döngü, 2B dizinin her satırında yinelenirken iç döngü, geçerli satırdaki her öğeyi işler. Bunun bir foreach döngüsüyle nasıl çalıştığı aşağıda açıklanmıştır:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>İndisler üzerinde daha fazla denetime ihtiyaç duyduğunda geleneksel for döngülerini de kullanabilirsin. Bu yaklaşım hem satır hem de sütun konumlarına erişmeni sağlar:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Bu iç içe döngü deseni, ister verileri görüntülüyor, ister hesaplamalar yapıyor, ister tüm ızgara yapısında belirli değerleri arıyor olun, 2B dizileri eksiksiz bir şekilde işlemek için temeldir.
Görev
KolayBir sınıfın oturma düzenini JSON biçiminde temsil eden 2B bir dizi olan tek bir girdi alacaksınız. Her iç dizi bir koltuk sırasını temsil eder ve her öğe bir öğrencinin adını veya boş koltuklar için boş bir dize içerir. Girdiyi okuyun, JSON dizesini 2B bir diziye dönüştürün, tüm oturma düzeninde gezinmek için iç içe döngüler kullanın ve her öğrencinin adını konumuyla birlikte şu biçimde yazdırın: Row X, Seat Y: Name
Boş koltukları (boş dizeleri) atlayın ve yalnızca dolu koltuklar için bilgi yazdırın. Satırlar ve koltuklar 1'den başlayarak numaralandırılmalıdır (0'dan değil).
Girdi biçimi: Oturma düzenini temsil eden bir JSON dizisi içeren tek satır (örnek: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Beklenen çıktı: Her dolu koltuğun, Row X, Seat Y: Name biçiminde ayrı bir satıra yazdırılması; burada X satır numarası, Y ise koltuk numarasıdır (her ikisi de 1'den başlar)
Kendin dene
<?php
// JSON girdisini oku
$input = trim(fgets(STDIN));
// JSON dizesini 2D diziye dönüştür
$seating = (array)json_decode($input, true);
// TODO: Kodunuzu aşağıya yazın
// Satırlar ve koltuklar arasında gezinmek için iç içe döngüler kullanın
// Boş koltukları atlamayı ve satırları/koltukları 1'den başlayarak numaralandırmayı unutmayın
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu SıralamaKendi başına pratik yap: Online PHP derleyicisi